嘿,我使用Node js中的multer包来上传文件。
我将其设为动态,但是请求处于get状态,我无法将其更改为post。
它仅对我有帮助。
现在在做什么? 它将文件保存在调用流的新文件夹中,并从客户端获取ID。 我需要替换它以发布并获取ID,但我想将逻辑移至路由并使其保持不变。谢谢
我的代码:
文件上传服务:
const path = require("path");
const multer = require("multer");
const crypto = require("crypto");
const models = require("../models");
const fsex = require("fs-extra");
const today = new Date();
const date =
today.getFullYear() + "-" + (today.getMonth() + 1) + "-" + today.getDate();
const storage = multer.diskStorage({
destination: (req,file,callback) => {
let flowID = req.params.flowID;
let path = `./uploads/flow/${flowID}`;
fsex.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)
);
});
}
});
const upload = multer({ storage: storage }).single("upload");
module.exports = {
upload: upload,};
我的路线:
router.get("/uploadfile/:flowID",upload,(req,res,next) => {
const file = req.file;
const flowID = req.params.flowID;
if (!file) {
const error = new Error("Please upload a file");
error.httpStatusCode = 400;
return next(error);
} else {
createFileInDB(file.originalname,flowID,file.filename)
.then(() => {
console.log("File Created");
res.json(file);
})
.catch(err => {
res.status(500).send(err);
});
}
});