Ju nuk do të gjeni shumë blogje në lidhje me Multer për të ngarkuar skedarë në një dosje tjetër në bazë të ndonjë referimi.
Rasti 1: Kur dëshironi të ngarkoni skedarë vetëm në dosje të ndryshme në bazë të emrit të fushës.
Shënim: Regjisori duhet të jetë tashmë i pranishëm në server. (Ju gjithashtu mund t'i krijoni ato në mënyrë dinamike duke përdorur modulin FS)
var assign = multer.diskStorage({ destination:function(req,file,cb){ const dir=’./public/uploads/’+file.fieldname; if(file.fieldname === “Assign1”){ cb(null,dir); }else if(file.fieldname===”Assign2"){ cb(null,dir); }else if(file.fieldname===”Assign3"){ cb(null,dir); }else if(file.fieldname===”Assign4"){ cb(null,dir); }else if(file.fieldname===”Assign5"){ cb(null,dir); } }, filename: function(req,file,cb){ cb(null,file.originalname) } }) var upload = multer({storage:assign});
Rrugët API do të duken kështu.
app.post(‘/submitted’,upload.any() ,function(req,res,next){ res.send(‘<html>file uploaded</html>’) })
Etiketat e hyrjes do të duken kështu
<form action=”/submitted” enctype=”multipart/form-data” method=”POST”> <table> <tr><p> <h4 class = “text-white”>Assignment 1 <input type=”file” name=”Assign1"></h4></p> <br></tr> <tr><p> <h4 class = “text-white”>Assignment 2 <input type=”file” name=”Assign2"></h4></p> <br></tr> <tr><p> <h4 class = “text-white”>Assignment 3 <input type=”file” name=”Assign3"></h4></p> <br></tr> <tr><p> <h4 class = “text-white”>Assignment 4 <input type=”file” name=”Assign4"></h4></p> <br></tr> <tr><p> <h4 class = “text-white”>Assignment 5 <input type=”file” name=”Assign5"></h4></p> <br></tr> <tr><button class=”button” type=”submit” >Submit</button> </tr> </table> </form>
I gjithë emri i skedarit duhet të shkruhet me kujdes
Rasti 2: Kur dosja duhet të krijohet në mënyrë dinamike, bazuar në një atribut si p.sh. ID-ja e përdoruesit, e kaluar në trup me skedarë të shumtë.
const multer = require('multer') const storage = multer.diskStorage({ destination: (req, file, cb) => { const { userId } = req.body const dir = ./uploads/${userId} fs.exists(dir, exist => { if (!exist) { return fs.mkdir(dir, error => cb(error, dir)) } return cb(null, dir) }) }, filename: (req, file, cb) => { const { userId } = req.body cb(null, UserId-${userId}-Image-${Date.now()}.png) } }) const upload = multer({ storage })