我使用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/"
});
谢谢!