问题描述
这是我上传多个文件的multer代码。
var storage = multer.diskStorage({
destination: function (req,file,cb) {
cb(null,'./public/files/'+ req.user.id)
},filename: function (req,cb) {
x = file.originalname; //+path.extname(file.originalname);
cb(null,x);
}
});
var upload = multer({storage: storage});
这是发帖请求,单击“提交”即可提交文件。
router.post(upload.array("FileUpload",12),function(req,res,next) {
//Here accessing the body datas.
})
所以我想要的是,我想先创建一个folder
的名称ID
来创建一个req.body
,可以从body
进行访问,然后将这些文件上传到其中文件夹。
但是由于我无法在上传之前先访问folder directory.
,所以无法创建相应的const multer = require('multer');
let fs = require('fs-extra');
var storage = multer.diskStorage({
destination: function (req,cb) {
let Id = req.body.id;
fs.mkdirsSync('./public/files/'+ req.user.id + '/' + Id);
cb(null,'./public/files/'+ req.user.id + '/' + Id)
},x);
}
});
var upload = multer({storage: storage});
,是否还有其他方法可以考虑和实施?
使用fs-extra软件包更新了解决方案。
router.post(upload.array("FileUpload",next) {
//Here accessing the body datas.
})
这是发帖请求,单击“提交”即可提交文件。
id
解决方法
您必须先安装fs-extra
,这将创建文件夹
为类似multerHelper.js
的multer创建单独的文件夹
const multer = require('multer');
let fs = require('fs-extra');
let storage = multer.diskStorage({
destination: function (req,file,cb) {
let Id = req.body.id;
let path = `tmp/daily_gasoline_report/${Id}`;
fs.mkdirsSync(path);
cb(null,path);
},filename: function (req,cb) {
// console.log(file);
let extArray = file.mimetype.split("/");
let extension = extArray[extArray.length - 1];
cb(null,file.fieldname + '-' + Date.now() + "." + extension);
}
})
let upload = multer({ storage: storage });
let createUserImage = upload.array('images',100);
let multerHelper = {
createUserImage,}
module.exports = multerHelper;
在您的路线中导入multerhelper文件
const multerHelper = require("../helpers/multer_helper");
router.post(multerHelper,function(req,res,next) {
//Here accessing the body datas.
})