我尝试使用multer上传照片并快递,一切正常。但是当我想使用fs库动态创建目录时,我需要访问req.body.name
函数中目的地的multer.diskStorage()
。
这可能吗?
这是我的代码:
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, './public/products');
},
filename: function (req, file, callback) {
if (file.mimetype === 'image/jpg') {
callback(null, file.fieldname + '-' + Date.now() + ".jpg");
}
else if (file.mimetype === 'image/jpeg' ) {
callback(null, file.fieldname + '-' + Date.now() + ".jpeg");
}
else if (file.mimetype === 'image/png') {
callback(null, file.fieldname + '-' + Date.now() + ".png");
}
else if(file.mimetype !== 'image/jpg' || file.mimetype !== 'image/jpeg' || file.mimetype !== 'image/png' ){
return false;
}
}
});
var Create_products = multer({ storage : storage , limits: {files:1 }}).single('PRODUCT_PHOTO');
是不是错了?
答案 0 :(得分:0)
我个人在前端(Angular js)使用了ngFileupload模块,我从那里发送数据和文件,我通过req.body.fieldname
访问它,我在fs的地方使用mkdirp模块,你可以显然选择你想要的任何东西
我已经提供了演示样本来实现整个事情。
如果您需要任何澄清,请与我们联系。祝你好运。
路线
app.post('/whatever', funcname.single('file'), thisiscalledafterupload, route.func);
上传功能
var funcdata = multer.diskStorage({
destination: function (req, file, cb) {
var newfoldername = req.body.foldername; //here the folder name is passed along with the files - I have used angular (ngfileupload)
mkdirp(__dirname + 'somethingroot/folder/' + newfoldername, function (err) {
console.log(__dirname);
if (err) console.error(err)
cb(null, __dirname + 'somethingroot/folder/' + newfoldername);
});
},
filename: function (req, file, cb) {
var f = Date.now() + '_';
cb(null, f + file.originalname)
//file saved now the thisiscalledafterupload will be called
}
})
var funcname = multer({
storage: funcdata
});