ng文件上传中断在Firefox上

ng-file-upload breaks on Firefox

本文关键字:Firefox 中断 文件 ng      更新时间:2024-04-08

我在AngularJS应用程序中使用ng文件上传,它在Chrome和Safari中运行良好,但在Firefox中坏了,我得到了控制台中的Error: Argument 2 of FormData.append does not implement interface Blob.消息。

其他人有这个问题吗?

包含指令的html代码段:

<label class="article-field-label" for="article_description">Imagens</label>  
  <div class="file-upload-container">
    <a class="btn btn-default cancel-file-upload-button" ng-click="cancelPic(1)"><span>&times;</span></a>
    <div class="button thumbnail-placeholder" ngf-select ng-file-select="onFileSelect($files)"
                  ng-model="article.filesAttachments.file1" name="file" type="file"
                  ngf-pattern="'image/*'" ngf-accept="'image/*'" ngf-max-size="5MB" ngf-min-height="100"
                  ngf-resize="{width: 100, height: 100}">
    <img ngf-src="thumbnailImage(1)">
  </div>
</div>

以及我向服务器发出POST请求的服务:

sendPayload = function(formData, method, url) {
  var options;
  options = {
    url: url,
    method: method,
    file: formData.filesAttachments,
    headers: { 'Content-Type': 'application/json' },
    fields: {
      article: {
        title: formData.title, 
        price: formData.price,
        user_id: formData.user_id,
        category: formData.category,
        article_state: formData.article_state,
        description: formData.description,
        city: formData.city,
        article_id: formData.article_id
      }
    }
  };
  if(method=='POST'){
    return Upload.upload(options).success(function(data, status){
      if(status === 201) {
        var file = formData.filesAttachments
        angular.forEach(file, function(file){
          file.upload = Upload.upload({
            url: '/articles/' + data.article_id + '/attachments.json',
            file: file,
            headers: { 'Content-Type': 'application/json' },
            method: 'POST'
          })
        })
      }
    }).success(function(data, status){
      latestArticleCreatedID = data.article_id;
    }).error(function(data, status) {
      console.log("Failed" + status);
    });
  }
}

所以我的问题的解决方案是基于Github上的这条评论来更改

file: formData.filesAttachments

file: new Blob([formData.filesAttachments])