如何通过multer上传文件之前如何自动创建文件夹,以使这些文件存储在nodejs中创建的文件夹中?

问题描述

这是我上传多个文件的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.

})

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...