【问题标题】:How to handle expressjs middleware request. POST request remains pending made by dropzone如何处理 expressjs 中间件请求。 dropzone 发出的 POST 请求仍处于待处理状态
【发布时间】:2015-08-30 13:00:31
【问题描述】:

我正在使用 dropzone 上传文件。在服务器端,我使用 node 和 expressjs。我也使用 multer 作为文件处理中间件。

dropzone 调用一个端点以将文件保存在服务器上。

在服务器端,我创建了一个端点来处理文件:

exports.saveFile = function (req, res) {
  console.log(req.files);
  return res.status(200);
  //I have not added any file save logic here
};

这就是我配置multer的方式

var app = express();
var server = require('http').createServer(app);
app.use(multer({ dest: './uploads/'}));

看起来 multer 会自动将文件保存到 uploads 文件夹中。

问题:即使文件保存在服务器上,请求在客户端仍然处于挂起状态。

如何从服务器向客户端返回成功响应?

我需要在我创建的端点上添加一些代码还是需要在 multer 给出的 onFileUploadComplete() 下添加所需的逻辑?

【问题讨论】:

标签: node.js express dropzone.js multer


【解决方案1】:

您的表单帖子需要一个 Express 路由来完成 http 请求。 multer 中间件将处理文件上传并将它们添加到请求中,以便它们可供路由处理程序使用,但您需要有一个用于表单发布的路由。

this page 上的 multer 示例中,您可以为您的路线做这样的事情:

app.post('/myform', function(req, res){
    console.log(req.body);  // form fields
    console.log(req.files); // form files
    res.status(204).end()
});

【讨论】:

  • 感谢您的快速回复。我有一个问题。如果由于某种原因文件上传失败并且我正在回复 multer 以保存文件,我该如何将错误代码发送回客户端?如果我错了,请纠正我,但在这种情况下,服务器将始终返回 204 状态。
  • @SharpCoder - 有关错误处理,请参阅 this answer
猜你喜欢
  • 2019-11-09
  • 2014-05-06
  • 1970-01-01
  • 2013-04-23
  • 2015-09-17
  • 2016-12-28
  • 2016-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多