när du bygger API: er förväntas behovet av att ladda upp filer, vilket kan vara bilder, textdokument, skript, PDF-filer, bland andra. I utvecklingen av denna funktionalitet kan vissa problem hittas, till exempel antalet filer, giltiga filtyper, storlekar på dessa filer och flera andra. Och för att rädda oss från dessa problem har vi Multer-biblioteket. Multer är en nod.JS middleware för hantering multipart/form-data som används för att skicka filer i formulär.

första stegen

det första steget är att skapa ett NodeJS-projekt på din dator.

lägga till Express

skriv följande kommando i din terminal:

yarn add express

* du kan också använda NPM för installation

skapa en fil med namnet app.js inuti mappen src/. Nästa steg är att starta vår Express server i vår app.js

const express = require("express")const app = express()app.listen(3000 || process.env.PORT, () => { console.log("Server on...")})

lägga till Multer

med projektet skapat, konfigurerat och med Express installerat lägger vi till multer till vårt projekt.

yarn add multer

nästa steg är att importera multer till vår app.js – fil.

const multer = require("multer")

vi är nästan där. Skapa nu en mapp som heter uploads där vi lagrar de uppladdade filerna.

konfigurera och validera uppladdningen

nu är vi i ett mycket viktigt steg som är konfigurationen av diskStorage. DiskStorage är en metod som görs tillgänglig av multer där vi konfigurerar destinationen för filen, namnet på filen och vi kan också lägga till valideringar angående filtypen. Dessa inställningar är enligt behoven i ditt projekt. Nedan lämnar jag ett elementärt exempel på konfigurationen.

const storage = multer.diskStorage({ destination: (req, file, cb) => { cb(null, "uploads/") }, filename: (req, file, cb) => { cb(null, Date.now() + "-" + file.originalname) },})

i konfigurationen ovan nämnde vi destinationen för de uppladdade filerna och ändrar också namnet på filen .

tillhandahåller en uppladdningsväg

const uploadStorage = multer({ storage: storage })// Single fileapp.post("/upload/single", uploadStorage.single("file"), (req, res) => { console.log(req.file) return res.send("Single file")})//Multiple filesapp.post("/upload/multiple", uploadStorage.array("file", 10), (req, res) => { console.log(req.files) return res.send("Multiple files")})

i kodavsnittet ovan skapade vi 2 POSTVÄGAR för att skicka filer. Den första /upload/single – rutten får bara en enda fil, Observera att uploadStorage-variabeln får våra diskStorage-inställningar. Som en middleware i rutten kallar den single – metoden för att ladda upp en enda fil. Rutten /upload/multiple tar emot flera filer, men med en maximal gräns på 10 filer, Observera att uploadstorage-variabeln nu kallar` array ’ – metoden för att ladda upp flera filer.

slutet

med alla inställningar gjort kan vårt lilla API redan lagra de skickade filerna.

const express = require("express")const multer = require("multer")const app = express()const storage = multer.diskStorage({ destination: (req, file, cb) => { cb(null, "uploads/") }, filename: (req, file, cb) => { cb(null, Date.now() + "-" + file.originalname) },})const uploadStorage = multer({ storage: storage })// Single fileapp.post("/upload/single", uploadStorage.single("file"), (req, res) => { console.log(req.file) return res.send("Single file")})//Multiple filesapp.post("/upload/multiple", uploadStorage.array("file", 10), (req, res) => { console.log(req.files) return res.send("Multiple files")})app.listen(3000 || process.env.PORT, () => { console.log("Server on...")})

nu är det upp till dig!

Lämna ett svar

Din e-postadress kommer inte publiceras.