如何configurationAPI端点以从ember-uploader组件接收文件

我想弄清楚如何使用ember-uploader ,我有以下组件(就像在自述文件中的一个)

export default EmberUploader.FileField.extend({ filesDidChange: function(files) { const uploader = EmberUploader.Uploader.create({ url: (ENV.APP.API_HOST || '') + '/api/v1/images/', }); console.log(uploader); if (!Ember.isEmpty(files)) { var photo = files[0]; console.log(photo); uploader.upload(photo) .then(data => { // Handle success console.log("Success uploading file"); console.log(data); }, error => { // Handle failure console.log("ERROR uploading file"); console.log(error); }); } } }); 

快速API端点正在侦听POST请求。

 var saveImage = (req, res, next) => { let body = req.body; res.json({ data: body }); }; 

但请求完成后, body是空的。 我真的不知道如何实现API端点,以获得文件,我试图看到req对象,它不包含该文件。

debugging它,使用组件select一个文件后,我在控制台中获得以下信息。

JS控制台

似乎API端点工作,因为我得到以下输出:

 POST /api/v1/images/ 200 27.284 ms - 11 

但我无法获得该文件。

在Express 4中,默认情况下,req对象上的req.files不再可用。 要访问req.files对象上的上传文件,可以使用一个多部件处理中间件,如busboy,multer,强大的,多方的,连接多方或pez。

在这个博客之后 ,下面的代码被添加到API中,并且问题中发布的ember-uploader代码按预期工作。

 import formidable from 'formidable'; var saveImage = (req, res, next) => { var form = new formidable.IncomingForm(); form.parse(req); form.on('fileBegin', function (name, file){ file.path = __dirname + '/tmp/' + file.name; }); form.on('file', function (name, file){ res.json({ data: file.name }); }); };