使用multer包在Node.js中处理每条路线的目的地

我使用multer程序包并使它动态化并起作用。现在,它尝试使每条路线都具有动态性,并坚持下去。

这是我的文件上传服务:

const path = require("path");
const multer = require("multer");
const crypto = require("crypto");
const fs = require("fs-extra");

const today = new Date();
const date = today.getFullYear() + "-" + (today.getMonth() + 1) + "-" + today.getDate();

const storage = multer.diskStorage({
  destination: (req,file,callback) => {
    const { companyID,flowID } = req.body;
    let path = `./uploads/${companyID}/${flowID}`;
    fs.mkdirsSync(path);
    callback(null,path);
  },filename: (req,cb) => {
    crypto.pseudoRandomBytes(8,(err,raw) => {
      if (err) return cb(err);
      cb(
        null,date + "_" + raw.toString("hex") + "_" + path.extname(file.originalname)
      );
    });
  }
});

//Must be under storage
const upload = multer({ storage: storage }).single("upload");

const deleteFileFromServer = (companyID,flowID,filePath) => {
  return new Promise((resolve,reject)=>{
    fs.unlink(`./uploads/${companyID}/${flowID}/${filePath}`).then(()=>{
      resolve("File Deleted");
    }).catch((err)=> {
      reject(err);
    })
  })
};

module.exports = {
  upload: upload,deleteFileFromServer: deleteFileFromServer
};

我的路线:在这里,我要处理每个设置为不同目的地的路线中的目的地

router.post("/uploadfile",upload,(req,res,next) => {
  const file = req.file;
  const flowID = req.body.flowID;
  if (!file) {
    const error = new Error("Please upload a file");
    error.httpStatusCode = 400;
    return next(error);
  } else {
    createFileInDB(file.originalname,file.filename)
      .then(() => {
        console.log("File Created");
        res.json(file);
      })
      .catch(err => {
        res.status(500).send(err);
      });
  }
});

我想要什么?我希望每条路线都可以选择不同的目的地。

router.post("/uploadfile",next) => {
  upload.destination = "my path/"
});

谢谢!

WOSHI555 回答:使用multer包在Node.js中处理每条路线的目的地

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3065807.html

大家都在问