【问题标题】:Multer in Nodejs using Express Router req.file undefined使用 Express Router req.file 在 Nodejs 中的 Multer 未定义
【发布时间】:2021-07-29 22:18:42
【问题描述】:

我正在尝试使用 multer 和 Express Router 实现文件上传功能。我使用 router.use 定义了一个端点/batch_upload,如下所示

api.js

router.use(
  "/batch_upload",
  upload.single("emp_csv_data"),
  userController.processBatchUserInformation
);

userController.js

exports.processBatchUserInformation = async (req, res) => {
  console.log(req.file);

  if (req.method == "POST") {
    try {
      console.log("Upload route reached - POST");
      console.log(req.file);
      console.log(req.file.path);
      return res.send(req.file);
    } catch (err) {
      console.log("Error Occurred");
      return res.send(err);
    }

  }
};

FileUploader.js 中,我定义了上传变量和 multer 选项,如下所示

var multer = require("multer");

var storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, "uploads");
  },
  filename: (req, file, cb) => {
    return cb(null, file.fieldname + "-" + Date.now());
  }
});


exports.upload = multer({ storage: storage });

最后,在 app.js 中,我使用了路由 app.use('/user',user_routes)

但是当我向http://localhost:5000/user/batch_upload 发送文件时,我收到req.file 的未定义响应

具有讽刺意味的是,我在示例测试项目中有确切的实现,并且一切似乎都很好。我不明白我错过了什么。如果您发现有问题,请帮我解决。

【问题讨论】:

  • 为了帮助将事情放在上下文中,您能否粘贴将对该端点的请求放在一起的代码?
  • 对不起,我不明白您所说的“请求”代码是什么意思。端点由 router.use 创建,提到了 multer 选项以及控制器方法。请求对象将是一个带有文件的简单表单数据。
  • 好的。您实际上如何向localhost:5000/user/batch_upload 发送请求?这是通过提交纯 html 表单来完成的吗?还是使用 javascript 库以编程方式处理?您能否将这些信息粘贴到您的帖子中,也许会有所帮助。
  • 我正在使用 Postman。我将用屏幕截图更新帖子。请看一下。
  • 日志中有什么?文件夹uploads 是否存在且您有权在此文件夹中写入?

标签: javascript node.js express multer express-router


【解决方案1】:

所以,文件未上传的原因是我没有在标题中添加 Content-type:multipart/form-data。谢谢你们试图提供帮助。我很感激。

【讨论】:

  • 奇怪。 “网站表单通常将数据作为 multipart/form-data 发送到 API。您可以使用表单数据正文选项卡在 Postman 中复制它。”这是你最初做的,对吧?很高兴听到你设法解决了这个问题。 learning.postman.com/docs/sending-requests/requests/…
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 2021-03-17
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 1970-01-01
相关资源
最近更新 更多