文件上传中的Sails js错误
Sails js Error in file Upload
我有一个表单,其中有一个名为 "uploadfile" 的输入类型文件。 selected 文件和提交表单时不会发生错误。但是在我没有 select 文件并提交表单时出现此错误。
`
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)
尝试安装 0.5.5 版的 Skipper - 默认的 ETIMEOUT 计时器已延长。同样在过去的版本中,许多用户的 ETIMEOUT 问题是由 ETIMEOUT 吞噬的多方表单上传错误(即未知内容类型)引起的。
要安装 skipper@0.5.5,您可以通过在您的项目中执行 npm install skipper --save
和 configuring it as middleware,直接将其作为 bodyparser 引入您的项目中,或者您可以只安装 Sails v0。 11.x,更新版本自带。
截至今天,Sails v0.11 在 npm 上发布时带有 "beta" 标签,因此您可以使用以下方法直接将其安装在您的项目中:
npm install sails@beta --save
你不应该对 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});
}
});
我有一个表单,其中有一个名为 "uploadfile" 的输入类型文件。 selected 文件和提交表单时不会发生错误。但是在我没有 select 文件并提交表单时出现此错误。
`
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)
尝试安装 0.5.5 版的 Skipper - 默认的 ETIMEOUT 计时器已延长。同样在过去的版本中,许多用户的 ETIMEOUT 问题是由 ETIMEOUT 吞噬的多方表单上传错误(即未知内容类型)引起的。
要安装 skipper@0.5.5,您可以通过在您的项目中执行 npm install skipper --save
和 configuring it as middleware,直接将其作为 bodyparser 引入您的项目中,或者您可以只安装 Sails v0。 11.x,更新版本自带。
截至今天,Sails v0.11 在 npm 上发布时带有 "beta" 标签,因此您可以使用以下方法直接将其安装在您的项目中:
npm install sails@beta --save
你不应该对 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});
}
});