Sir*_*mon 2 javascript file-upload node.js angularjs sails.js
我正在尝试使用以下指令将文件上传到sails.js应用程序服务器: ng-file-upload
我的客户端上传已经选择的图像是这样的:
$upload.upload({
url:'upload/item-image',
headers:{
'Content-Type': 'multipart/form-data'
},
data:{blah:'blah'},
file: $scope.uploadFile,
fileName:$scope.uploadFile.name
}).success(function(data){
console.log(data);
}).error(function(err){
console.log(err);
});
Run Code Online (Sandbox Code Playgroud)
我在服务器上处理上传的sails.js控制器方法如下所示:
upload: function (req, res) {
req.file('item-image').upload(function (err, files) {
if (err)
return res.serverError(err);
if(!files.length)
return res.serverError('No files received for upload.');
var file = files[0];
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
但是,在调用服务器函数时,并且正文上的json数据存在,req.file('无论放在何处')回调没有找到任何文件.
提前致谢.
req.file需要的参数是Sails应该查找上传文件的请求中字段的名称.如果您正在使用以下内容执行简单的HTML表单:
<input type="file" name="myFileField" />
Run Code Online (Sandbox Code Playgroud)
那么在您的控制器代码中,您将拥有:
req.file('myFileField').upload(...);
Run Code Online (Sandbox Code Playgroud)
对于像本问题中引用的ng-file-upload小部件这样的上传小部件,有时候弄清楚该字段名称是什么有点棘手.在这种情况下,它隐藏在使用说明中:
Run Code Online (Sandbox Code Playgroud)//fileFormDataName: myFile, // or a list of names for multiple files (html5). // Default is 'file'
因此,您可以设置fileFormDataName更改上载字段名称,否则默认为file.
如果您在文档中找不到字段名称或通过检查HTML,最简单的方法就是上传(即使它不成功)并使用Chrome中的开发人员工具检查网络请求:

这是来自Angular文件上传演示页面.你可以在右下角看到它所说的name="myFile"; 这就是你要找的东西.在这种情况下,将调用文件字段myFile.
| 归档时间: |
|
| 查看次数: |
1680 次 |
| 最近记录: |