ng-file-upload +向服务器发送多个文件数组空(sails)

时间:2016-03-03 16:52:50

标签: javascript angularjs ng-file-upload

我正在尝试使用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 -

我做错了什么?

2 个答案:

答案 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

最好的。