2016-07-10 48 views
1

我使用sails.js来创建后端,它支持发布文本并在我的控制器方法中同时上传文件/图像。由于业务逻辑,我需要告诉是否对此控制器方法的POST请求包含用于上传的文件。如何判断POST请求是否包含要在Sails.js中上传的文件?

要上传文件,我使用sails.js中的内建Skippermodule并在req参数中使用file字段。例如,如果我需要上传图片,我把images领域的要求去到后端/ sails.js:

req.file('images').Upload({...}); 

我试图用req.file('images')检查,如果传入的请求中包含的文件按照上传,但它不工作 - 请求,而不仍然上传文件给req.file('images') = true

if (!!req.file('images')) { // this turns out to be true regardless of uploading file or not 
      return uploadToS3(req, 'images'); 
     } 

sails.log.info('creating entity without uploading file'); 
return createEntityWithoutImage(req.params.all()); 

不知道如何判断一个POST请求包含文件上传?

回答

1

您可以通过检查用户上传的文件数量:

req.file('images')._files.length

这是队长的无证功能:

https://github.com/balderdashy/skipper/blob/master/standalone/Upstream/Upstream.js#L51

所以它可以在将来是decpreate versioln 。所以一定要确保不先升级模块而不先测试。

+0

感谢您的建议,但是,我得到了这个错误:'错误:EMAXBUFFER:上游('NOOP_images')在插入接收器之前超时。在等待4500毫秒后仍然没有使用。您可以通过更改'maxTimeToBuffer'选项来配置此超时。我想当你调用'req.file('images')._ files.length'时,会执行'req.file()'函数,如果在那个时间窗口内没有收到文件输入,会导致上述错误。 – TonyGW

+1

我想我很久以前有同样的问题,我用这个:http://stackoverflow.com/questions/28185223/sails-js-how-to-know-if-the-request-contains-a-file-上传/ 31651551#31651551 但它可能不工作了(得到了负面的回答:(如果它适合你,请upvote;) – hlozancic

相关问题