【问题标题】:File uploading with angular and angular-file-upload使用 angular 和 angular-file-upload 上传文件
【发布时间】:2015-07-07 20:34:39
【问题描述】:

我正在使用 Angular 和 plugin 来上传文件。它基本上开始处理文件上传,但我正准备开始提交表单。

我试过这个:

HTML

<form>
   <input type="file" ng-file-select="onFileSelect($files)">
   <input type="submit" ng-click="sendMail()" value="send">
</form>

JS

app.controller('mail', function ($scope, $http, $upload) {

    $scope.onFileSelect = function($files) {
        $scope.files = angular.copy($files);
        console.log($scope.files); // Returns my object (size, type, name...)
    }

    $scope.sendMail = function() {
    var file = myFile;
    console.log(file);             // Still returns my object
        $scope.upload = $upload.upload({
        url: 'server/mail.php',
        data: { 
            // stuff 
        },
        file: file,                // Returns : Error: does not implement Blob
        }).success(function(data, status, headers, config) {
            console.log(data);
        });
    }

})

我尝试在第一个函数中创建一个像 myFile = $scope.files; 这样的全局变量。然后像这样在第二个调用它:var file = myFile;。控制台日志返回相同的对象,但我收到以下错误:

错误:FormData.append 的参数 2 未实现接口 斑点。

感谢任何提示。

【问题讨论】:

    标签: angularjs file-upload


    【解决方案1】:

    好的,有人给我答案。

    在我的例子中,angular.copy() 将变量从 File 更改为 Object。所以我只需要删除它。

    希望它可以提供帮助。

    【讨论】:

      【解决方案2】:

      如果您仍想使用 angular.copy(),可以解决此问题。我已经尝试过了,这很有效。

      当您尝试对文件数组进行深度复制时,不要使用 angular.copy(),而是将该数组与空白数组 ('[]') 连接起来,并将结果分配到一个新数组中。

      因此,将$scope.files = angular.copy($files); 行替换为以下行:

      $scope.files = ($files || []).concat([]);
      

      这应该具有 copy() 方法的魔力。

      【讨论】:

        猜你喜欢
        • 2015-12-01
        • 2017-10-20
        • 2016-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-06
        • 2020-01-15
        相关资源
        最近更新 更多