如何使用angular-file-upload在Node.js Express应用程序中获取上传的文件

我想要使​​用angular-file-upload来上传文件。 但是,当我尝试访问req.body.filesreq.files我得到undefined

任何人都可以告诉我如何通过node.js表示应用程序中的angular-file-upload来获取上传的文件吗?

请求有效载荷如下:

 Content-Disposition: form-data; name="myFile"; filename="BroadcomLogo.gif" Content-Type: image/gif 

JS代码:

 $scope.upload[index] = $upload.upload({ url : '/upload', method: 'POST', file: $scope.selectedFiles[index], fileFormDataName: 'myFile' }); 

节点代码

 upload: function(req, res) { console.log(req.files); res.send("Hello"); }, 

您需要使用一个中间件来parsingNode.js中的请求中的文件:

 var multipart = require('connect-multiparty'); var multipartMiddleware = multipart(); app.post('/upload', multipartMiddleware,upload); 

简而言之, 中间件是处理请求的函数 。 由connect.createServer创build的服务器可以有一堆与之关联的中间件。 当一个请求进入时,它会被传递到第一个中间件函数,以及一个包装的ServerResponse对象和一个下一个callback。 每个中间件可以决定通过调用响应对象的方法来响应,或者通过调用next()将请求传递给堆栈中的下一层

http://stephensugden.com/middleware_guide/

在多部分中间件的情况下,它将调用next()方法,以便您可以编写自己的函数来响应请求。

当然你需要先安装它: npm install connect-multiparty

他们是处理分段上传的其他中间件:

  • busboy和连接busboy
  • 多党和连接多党
  • 强大
  • multer

你可能应该使用一个兼容的连接,因为快速build立在连接之上

name属性作为关键字在files对象中访问它:

 req.files.myFile