Sails js文件上传错误

时间:2015-01-29 08:03:37

标签: javascript jquery sails.js

我有一个表单,其中包含一个名为“uploadfile”的输入类型文件。选择文件并提交表单时不会发生错误。但是当我没有选择文件并提交表单时出现此错误。

`

if(req.file('uploadfile')._files.length>0){
                var ques_file  = req.file('uploadfile');
                console.log('here');
                ques_file.upload({ 
                  saveAs: function(file, cb) {                       
                            cb(null, file.filename);
                          },
                  dirname: dirPath },function (err, files) {
                  if (err){                        
                    return res.serverError(err);
                  }else{                     
                    name =files[0].filename;
                    filename=name;                     
                    console.log("file : "+filename);

                  }
                });

` 并且在有这个错误的commad中

 events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: ETIMEOUT: An Upstream (`NOOP_ques_uploadfile`) timed out waiting for file(s). No files were sent after waiting 10000ms.
    at null.<anonymous> (C:\xampp\htdocs\kucbt_admin\node_modules\sails\node_modules\skipper\standalone\Upstream\Upstream.js:62:15)
    at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)

2 个答案:

答案 0 :(得分:3)

你不应该使用req.file()的if语句,你可以检查function whenDone中的数组长度,如下例所示:

req.file('avatar').upload({
      saveAs: function(file, cb) {
        cb(null, file.filename);
      },
      dirname: uploadPath
    }, function whenDone(err, uploadedFiles) { //onUploadComplete
      if (uploadedFiles.length==0) {
        //if no file selected.
        sails.log.info('nothing selected');
        return res.view('showimage');
      }
      if (err){
        return res.serverError(err);
      } else{
        return res.view('showimage', {file:uploadedFiles});
      }
    });

答案 1 :(得分:2)

尝试安装0.5.5的Skipper-扩展了默认的ETIMEOUT计时器。同样在过去的版本中,许多用户的ETIMEOUT问题来自ETIMEOUT正在吃掉的多方表单上传错误(即未知内容类型)。

要安装skipper@0.5.5,您可以通过在项目configuring it as middleware中执行npm install skipper --save直接将其作为bodyparser引入,或者您可以安装Sails v0.11。 x,附带更新版本。

截至今天,Sails v0.11发布了&#34; beta&#34;在npm上标记,因此您可以使用以下命令直接在项目中安装:

npm install sails@beta --save