![](/img/trans.png)
[英]How upload files and optimize them before upload using multer - NodeJs
[英]How to create folder automatically before files upload via multer so that those files get stored in that created folder in nodejs?
這是我上傳多個文件的 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);
cb(null,x);
}
});
var upload = multer({storage: storage});
這是在單擊提交時提交文件的發布請求。
router.post(upload.array("FileUpload",12), function(req, res, next) {
//Here accessing the body datas.
})
所以我想要的是,我想首先使用生成的ID
的名稱創建一個folder
,可以從req.body
訪問,然后將這些文件分別上傳到該文件夾中。 但是由於在上傳之前我無法先訪問body
,因此我無法創建相應的folder directory.
有沒有其他方法可以讓我想到並實現這一點?
使用 fs-extra 包更新了解決方案。
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});
這是在單擊提交時提交文件的發布請求。
router.post(upload.array("FileUpload",12), function(req, res, next) {
//Here accessing the body datas.
})
你必須先安裝fs-extra
它將創建文件夾
為 multer 創建單獨的文件夾,如multerHelper.js
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.
})
我遵循了您的代碼,但它在文件夾名稱中返回未定義。 你是怎么得到正確的身份證的? 謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.