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

ng-file-upload + sending multiple file array empty to server (sails)

本文关键字:服务器 sails 数组 文件 ng-file-upload      更新时间:2023-09-26

我正在尝试使用 ng-file-upload 将多个文件发送到我的 sails 服务器。我正在使用ng文件上传网页的示例,但它不起作用。

问题:

我在服务器上得到一个空数组。

事实:

我正在使用 chrome,它具有 html5 多文件上传支持。

我使用邮递员测试了服务器,它工作了,话虽如此,问题出在客户端上。

我能够在客户端控制台.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>

网络选项卡日志:

接受:应用程序/json, 文本/纯文本, /内容类型:多部分/表单数据;boundary=----WebKitFormBoundaryhfBw31xYfdWDtTlU来源:http://localhost:1337引用:http://localhost:1337/editproject用户代理:Mozilla/5.0 (Macintosh;Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36

------WebKitFormBoundaryhfBw31xYfdWDtTlU内容处置:表单数据;名称="osg文件[0]";文件名="P51D-JW-03.png"内容类型:图像/png

------WebKitFormBoundaryhfBw31xYfdWDtTlU内容处置:表单数据;名称="osg文件[1]";文件名="P51D-JW-02.png"内容类型:图像/png

------WebKitFormBoundaryhfBw31xYfdWDtTlU内容处置:表单数据;名称="osg文件[2]";文件名="P51D-JW-01.png"内容类型:图像/png

------WebKitFormBoundaryhfBw31xYfdWDtTlU内容处置:表单数据;名称="资产 ID"

5------WebKitFormBoundaryhfBw31xYfdWDtTlU内容处置:表单数据;名称="加载值类型"

四------WebKitFormBoundaryhfBw31xYfdWDtTlU--

我做错了什么?

将 arrayKey: ' ' 字段添加到上传函数

    Upload.upload({
        url: '/api/updateAsset',          
        arrayKey: '',
        data: {
                osgFile: test,
                'assetId': 5,
                'loadValueType' : 4,
              },
        method: "PUT"
      })

它将确保以"fieldName"而不是"fieldName[0]"接收文件数组

我发现了"问题":

ng-file-upload将"名称"(字段)更改为"名称[0]","名称[1]","名称[n]"...我试图用"名称"获取服务器上的所有数组。

我试图用"name"获取所有数组

的原因是,当我用邮递员发送数组时,它只使用"name"来获取所有数组。

使用 sails + ng-file-upload 上传多个文件时避免数组问题的解决方案在这里:https://github.com/balderdashy/skipper/issues/67

最好。