当使用dropzone发送文件时,在服务器端(使用express和node构建)的Req.files in undefined中



我正在使用dropzone从UI上传文件。这是我的drozone配置:

 var imageUpload = new Dropzone('div#dataSection', {
        url: 'api/image',
        autoProcessQueue: true,
        paramName: 'file'
      });

我正在使用node和expressjs基于此链接构建服务器端端点

我在服务器端执行以下代码。

fs.readFile(req.files.displayImage.path, function (err, data) {
  // ...
  var newPath = __dirname + "/uploads/uploadedFileName";
  fs.writeFile(newPath, data, function (err) {
    res.redirect("back");
  });
});

问题是 req.files 未定义。我错过了什么吗?

您遵循的教程已经过时了,当然是为旧版本的express编写的。在 2014 年 4 月发布的 express 4.0 中,(几乎)所有内置中间件都被丢弃,包括将上传的文件解析为 req.files 的中间件。

这就是问题所在,解决方案是使用单独的模块来处理上传的文件。 Multer似乎是自然的选择(感谢@Ben财富的这个建议)。

首先,安装 multer 节点.js模块:

npm install multer

然后,在服务器端的代码中:

var express = require('express')
var multer  = require('multer')
var app = express()
app.use(multer({ dest: './uploads/'})) // directory to store uploaded files in

之后,所有 POST -ed 文件都应以 Multer 文件对象的格式在路由处理程序函数中作为req.files提供。

最新更新