reactjs - 无法访问multer中的文件名
问题描述
在查看了大量文档后,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
,它会正确保存。
解决方案
当您上传单个文件 ( upload.single
) 时,请查看req.file
,而不是req.files
.
推荐阅读
- stripe-payments - 如何向订阅收取自动费用的客户发送发票?
- android - 将支持 gradle 插件更新为 28.0.0-alpha1 时,发布版本已损坏
- angular - 无法在 Angular 5 中设置选定值
- c++ - QT-信号和插槽 setEnabled(bool) 插槽不起作用
- python - 无法将机器人连接到 Bale messenger API:网络连接断开
- c++ - 递归列表:一切都调用析构函数
- git - 如何提交对drupal项目的更改
- node.js - 在 React 组件的 setState 中使用 Math.random 时组件的渲染不正确
- swift - 自定义 UINavigationBar 状态栏不包括背景图片
- c++ - 睡眠线程或进程的指令是否在线程/进程处于睡眠状态时继续执行?