我一直在研究使用multer 上传,并且它的效果非常好。最近,我一直在尝试增强我当前的代码,以便可以从客户端选择上传目的地。但结果却是死路一条。
有没有办法从客户端更改上传目的地?
以下是我作为基础使用的代码,它非常标准:
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, './uploads'); //same folder as upload.js
},
filename: function (req, file, callback) {
// fileNameUploaded = file.originalname
callback(null, Date.now()+ path.extname(file.originalname));
}
});
var upload = multer({ storage : storage }).array('userPhoto',5);
//upload file
router.post('/api/upload',function(req,res){
upload(req,res,function(err) {
if(err) {
return res.end("Error uploading file.");
}
res.end("File is uploaded");
});
});
答案 0 :(得分:0)
您是否尝试过使用类似的东西
const path = require('path')
destination: function (req, file, callback) {
const dest = req.query.dest
callback(null, path.join(__dirname, 'uploads', dest))
},
它需要一个类似?dest=folder
的网址,并将其附加到您的上传路径。
但是如果你让客户选择目录,请确保dest
cat不像../
那样,并且会覆盖你不想被覆盖的文件(比如你的upload.js)。