【问题标题】:File upload using Express and multer使用 Express 和 multer 上传文件
【发布时间】:2016-10-22 08:31:09
【问题描述】:

无论我做什么,我似乎都无法让 multer 工作;我已经阅读了我能找到的关于这件事的所有内容,并且就示例而言——我已尽我所能地遵循它们。

Here is a JSFiddle link to my work.

我似乎永远无法上传文件,尽管它实际上正在上传。在我的代码中,我有

app.post('/submit', function(req, res) {
  console.log("____ Clicked submit ____");
  console.log(req.body);

  console.dir(req.files);
});

req.body.attachment 将显示我附加的文件名。但是,req.files 返回undefined。

感谢所有帮助。

【问题讨论】:

    标签: html node.js express file-upload


    【解决方案1】:

    您必须在中间件链的某处使用multer 处理程序。您已经定义了处理程序:

    var upload = multer({
      dest: './tmp/'
    });
    

    但是,您不要在中间件链中使用它。

    有两种选择: 1)使用全局处理程序(链的顶部,不推荐) 2) 在你的submit 路由上使用它(推荐)

    阅读docs了解具体实现,但以下应该可行。

    // Multer parses single field "attachment"
    app.post('/submit', upload.single('attachment'), function(req, res) {
      console.log("____ Clicked submit ____");
      console.log(req.body);
    
      // console.dir(req.files);
      // for single field use `req.file`, not `req.files`
      console.log(req.file);
    });
    

    【讨论】:

    • 我已经尝试过了。我知道我忘记了一些东西——但这仍然产生undefined。它可能与我在最底部的 html 中使用的脚本有关吗?
    • 当然。您需要通过 XHR 以不同的方式处理多部分请求。这可能会对您有所帮助:stackoverflow.com/questions/5392344/…
    • 我添加了额外的脚本来阻止页面在提交表单时重新加载;如何阻止页面重新加载,同时仍处理服务器上的表单内容?
    猜你喜欢
    • 2017-03-01
    • 2015-10-11
    • 2018-07-21
    • 2016-01-16
    • 2017-11-12
    • 1970-01-01
    • 2021-08-11
    • 2016-06-14
    • 2020-05-21
    相关资源
    最近更新 更多