【发布时间】:2021-10-30 05:01:50
【问题描述】:
查看Multer 上的大量文档后,我相信我的快速服务器上的设置正确。但是,每次我尝试访问传入文件的req.files.filename 属性时,该值都会以未定义的形式返回。
这是我的 Express 服务器端代码:
const storage = multer.diskStorage({
destination: '../Uploads',
filename: (req, file, cb) => cb(null, file.originalname)
});
const upload = multer({
storage: storage
});
Router.post("/", upload.single("file"), async (req, res) => {
debug.log("connected");
debug.log(req.file);
debug.log(req.body);
if (!req.files) {
debug.log("receiving connection but file not found");
res.send({
status: false,
message: "No file uploaded",
});
} else {
debug.log("receiving connection and file found");
try {
debug.log(req.files.filename);
debug.log("attempting to save file" + req.files);
const post = await new Post({
title: req.files.filename,
owner: req.body.owner,
industry: req.body.industry,
});
如果我理解正确,调用 upload.single 应该使 req.file.filename 成为可用属性,但它似乎不起作用。
编辑:
我终于解决了这个问题!
显然使用app.use(fileUpload()); 中间件会以某种方式干扰Multer。
在我启用app.use(fileUpload()); 之前,我可以通过req.files 访问文件,但文件不会保存。
注释掉app.use(fileUpload());后,我可以通过req.file访问文件,它会正确保存。
【问题讨论】:
标签: reactjs express file-upload server multer