Node.js 如何在通过multer上传文件之前自动创建文件夹,以便这些文件存储在nodejs中创建的文件夹中?
这是我上传多个文件的multer代码Node.js 如何在通过multer上传文件之前自动创建文件夹,以便这些文件存储在nodejs中创建的文件夹中?,node.js,file-upload,multer,create-directory,Node.js,File Upload,Multer,Create Directory,这是我上传多个文件的multer代码 var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, './public/files/'+ req.user.id) }, filename: function (req, file, cb) { x = file.originalname; //+path.extname(file.originalname);
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './public/files/'+ req.user.id)
},
filename: function (req, file, cb) {
x = file.originalname; //+path.extname(file.originalname);
cb(null,x);
}
});
var upload = multer({storage: storage});
这是post请求,单击submit可提交文件
router.post(upload.array("FileUpload",12), function(req, res, next) {
//Here accessing the body datas.
})
router.post(upload.array("FileUpload",12), function(req, res, next) {
//Here accessing the body datas.
})
因此,我想要的是,我想要创建一个文件夹
,首先使用生成的ID
名称,可以从req.body
访问该文件夹,然后分别将这些文件上载到该文件夹中。
但是,由于我无法在上传之前首先访问正文
,因此我无法创建相应的文件夹目录。
是否有其他方法可以考虑并实现此功能
使用fs额外包更新了解决方案
const multer = require('multer');
let fs = require('fs-extra');
var storage = multer.diskStorage({
destination: function (req, file, cb) {
let Id = req.body.id;
fs.mkdirsSync('./public/files/'+ req.user.id + '/' + Id);
cb(null, './public/files/'+ req.user.id + '/' + Id)
},
filename: function (req, file, cb) {
x = file.originalname; //+path.extname(file.originalname);
cb(null,x);
}
});
var upload = multer({storage: storage});
这是post请求,单击submit可提交文件
router.post(upload.array("FileUpload",12), function(req, res, next) {
//Here accessing the body datas.
})
router.post(upload.array("FileUpload",12), function(req, res, next) {
//Here accessing the body datas.
})
您必须首先安装将创建文件夹的
fs extra
为multer-likemulterHelper.js创建seprate文件夹
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, file, 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.
})
哪里可以找到帮助者/multer\u帮助者?您必须在项目中创建它。我已经根据您的答案更新了解决方案。对吗?请在我的问题中添加“使用fs extra package更新解决方案”后进行检查。我已经为routes创建了SeCreate文件夹,因此此方法适用于meDidn,但尚未测试。我会做的,并让你知道它是否有效。然后我也会投票表决你的答案,当然,谢谢!:)