我正在尝试使用ng-file-upload将多个文件发送到我的sails服务器。我正在使用ng-file-upload的网页示例,但它不起作用。
问题:
我在服务器上得到一个空数组。
事实:
我正在使用chrome,它支持html5多文件上传。
我使用postman测试了服务器并且它工作正常,问题在于客户端。
我能够在客户端上控制.log文件。
这是js代码:
$scope.onFileSelect = function (files) {
if (!($scope.updateAssetForm.OSGImages)) {
console.log($scope.updateAsset.OSGImages.$valid);
console.log($scope.updateAssetForm.OSGImages);
return;
}
console.log($scope.updateAssetForm.OSGImages);
var test = [];
for (var i = 0; i < $scope.updateAssetForm.OSGImages.length; i++) {
test.push($scope.updateAssetForm.OSGImages[i])
}
console.log(test);
Upload.upload({
url: '/api/updateAsset',
data: {
osgFile: test,
'assetId': 5,
'loadValueType' : 4,
}
})
},
这是html代码:
<div class = "control-group form-group col-md-12"
ng-class = "{'has-error':updateAsset.OSGImages.$invalid && updateAsset.OSGImages.$dirty}" ng-if = "showUploadFile(4)">
<button ngf-select="onFileSelect(updateAssetForm.OSGImages)" ng-model="updateAssetForm.OSGImages" ngf-multiple="true">
OSG Images (optional) (max 3 MB)
</div>
<p ng-repeat="image in updateAssetForm.OSGImages">
{{image.name}}
</p>
<span class = "help-block has-error" ng-if="updateAsset.OSGImages.$dirty">
</span>
</div>
网络标签日志:
接受:application / json,text / plain, / 内容类型:多部分/格式的数据;边界= ---- WebKitFormBoundaryhfBw31xYfdWDtTlU 起源:http://localhost:1337 引用者:http://localhost:1337/editproject 用户代理:Mozilla / 5.0(Macintosh; Intel Mac OS X 10_11_1)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 48.0.2564.116 Safari / 537.36
------ WebKitFormBoundaryhfBw31xYfdWDtTlU 内容处理:表格数据; NAME = “osgFile [0]”;文件名= “p51d-JW-03.png” 内容类型:image / png
------ WebKitFormBoundaryhfBw31xYfdWDtTlU 内容处理:表格数据; NAME = “osgFile [1]”;文件名= “p51d-JW-02.png” 内容类型:image / png
------ WebKitFormBoundaryhfBw31xYfdWDtTlU 内容处理:表格数据; NAME = “osgFile [2]”;文件名= “p51d-JW-01.png” 内容类型:image / png
------ WebKitFormBoundaryhfBw31xYfdWDtTlU 内容处理:表格数据; NAME = “由assetid”
5 ------ WebKitFormBoundaryhfBw31xYfdWDtTlU 内容处理:表格数据; NAME = “loadValueType”
4 ------ WebKitFormBoundaryhfBw31xYfdWDtTlU -
我做错了什么?
答案 0 :(得分:4)
添加arrayKey:&#39; &#39;字段到您的上传功能
Upload.upload({
url: '/api/updateAsset',
arrayKey: '',
data: {
osgFile: test,
'assetId': 5,
'loadValueType' : 4,
},
method: "PUT"
})
它将确保使用&#34; fieldName&#34;接收文件数组。而不是&#34; fieldName [0]&#34;
答案 1 :(得分:0)
我发现了“问题”:
ng-file-upload将“名称”(字段)更改为“name [0]”,“name [1]”,“name [n]”...我试图获取所有数组在服务器上使用“name”。
我试图用“名称”获取所有数组的原因是因为当我使用邮递员发送数组时,它只使用“名称”获取所有数组。
使用sails + ng-file-upload上传多个文件时避免阵列问题的解决方案如下: https://github.com/balderdashy/skipper/issues/67
最好的。