簡體   English   中英

ng-file-upload無法執行setRequestHeader

[英]ng-file-upload Failed to execute setRequestHeader

我在ng-file-upload時遇到問題,我使用的代碼幾乎與GitHub上的示例相同,但是當我嘗試上傳文件時,出現此錯誤:

Error: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': 'function (xhr) {
          if (!xhr || !(xhr instanceof XMLHttpRequest)) return;
          config.__XHR = xhr;
          if (config.xhrFn) config.xhrFn(xhr);
          xhr.upload.addEventListener('progress', function (e) {
            e.config = config;
            notifyProgress(getNotifyEvent(e));
          }, false);
          //fix for firefox not firing upload progress end, also IE8-9
          xhr.upload.addEventListener('load', function (e) {
            if (e.lengthComputable) {
              e.config = config;
              notifyProgress(getNotifyEvent(e));
            }
          }, false);
        }' is not a valid HTTP header field value.

我正在使用ng-file-upload和angular 1.5.0的最新版本(但也用1.4.7進行了測試,同樣的錯誤)。 我只是復制了示例,所以帶有上載的指令的HTML如下所示:

<div>
    <label>{{field.label}} <span ng-if="field.required" class="text-red">*</span></label>

    <p ng-show="field.help">
      {{field.help}}
    </p>

    Drop File:
    <div ngf-drop ngf-select ng-model="files" class="drop-box"
         ngf-drag-over-class="'dragover'" ngf-multiple="true" ngf-allow-dir="true"
         accept="image/*,application/pdf"
         ngf-pattern="'image/*,application/pdf'">Drop pdfs or images here or click to upload</div>
    <div ngf-no-file-drop>File Drag/Drop is not supported for this browser</div>

    Files:
    <ul>
        <li ng-repeat="f in files">{{f.name}} {{f.$error}} {{f.$errorParam}}</li>
    </ul>

    Upload Log:
    <pre>{{log}}</pre>
</div>

我的上傳服務:

scope.$watch('files', function() {
                scope.upload(scope.files);
            });

            scope.log = '';

            scope.upload = function(files) {
                if (files && files.length) {
                    for (var i = 0; i < files.length; i++) {
                        var file = files[i];
                        if (!file.$error) {
                            Upload.upload({
                                url: 'https://angular-file-upload-cors-srv.appspot.com/upload',
                                data: {
                                    file: file
                                }
                            }).progress(function(evt) {
                                var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
                                scope.log = 'progress: ' + progressPercentage + '% ' +
                                    evt.config.data.file.name + '\n' + scope.log;
                            }).success(function(data, status, headers, config) {
                                $timeout(function() {
                                    scope.log = 'file: ' + config.data.file.name + ', Response: ' + JSON.stringify(data) + '\n' + scope.log;
                                });
                            });
                        }
                    }
                }
            };

我在angular.js之前加入了墊片:

<script type="text/javascript" src="vendor/jquery/dist/jquery.min.js"></script>

<script type="text/javascript" src="vendor/datatables/media/js/jquery.dataTables.min.js"></script>

<script type="text/javascript" src="vendor/ng-file-upload/ng-file-upload-shim.min.js"></script>

<script type="text/javascript" src="vendor/angular/angular.js"></script>

...

<script type="text/javascript" src="vendor/ng-file-upload/ng-file-upload.js"></script>

<script type="text/javascript" src="src/app/app.js"></script>

<script type="text/javascript" src="src/app/client/client.js"></script>

知道有什么問題嗎?

好的,問題是由PACE.js庫(用於XHR請求的JS進度欄)引起的,解決方案正在將其刪除或應用此補丁-https: //github.com/danialfarid/ng-file-upload/issues/98

添加此行以上傳服務即可

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM