如何拦截Express.js中的多部分文件流?

时间:2012-05-24 11:00:12

标签: node.js express multipartform-data

遵循示例

https://github.com/visionmedia/express/blob/master/examples/multipart/app.js

Express.js似乎在幕后完成所有工作并保存文件并将其全部提供给您。我如何拦截和操纵原始流?具体来说,我想获得流,以便我可以将它连接到写入流。

2 个答案:

答案 0 :(得分:3)

你不能,除非你制作一个使用强大的中间件并拦截那里的流(解决方案是改变Express使用的bodyParser和自定义的)。

请在以下文件中自行查看:https://github.com/senchalabs/connect/blob/master/lib/middleware/multipart.js

请注意,您无法加入“全局”事件。

答案 1 :(得分:0)

您可以使用:

app.use(express.multipart({ defer: true }));

然后,在路线中:

app.post('/upload', function (request, response, next) {
  request.form.onPart = function (part) {
    // Default handling for non-files
    if (!part.filename) return form.handlePart(part);

    // part is a stream of the file
  };

  request.form.parse(request, function (error) {
    if (error) return next(error);
  });
});