簡體   English   中英

ng2-file-upload:如何更改文件上傳的表單數據名稱

[英]ng2-file-upload: How to change the form-data name for file upload

我目前正在使用此代碼上傳文件(Angular 2+):

upload() {
  let inputEl: HTMLInputElement = this.inputEl.nativeElement;
  let fileCount: number = inputEl.files.length;
  let formData = new FormData();
  if (fileCount > 0) { // a file was selected
      for (let i = 0; i < fileCount; i++) {
          formData.append('files', inputEl.files.item(i));
      }
      this.http.post(mySecretUrl, formData, {observe: 'response'}).subscribe(err => this.handleError(err), resp => {
        console.log(resp);
      });
  }
}

使用 html:

<input #fileInput type="file" [multiple]="true" id="file-upload" size="60">

這工作正常,但我想使用 ng2-file-upload 因為該包附帶的所有額外的好東西。

當我輸入 ng2-file-upload 的代碼並嘗試上傳時,出現 500 錯誤。 我 100% 確定問題是鍵名“文件”,您將在舊代碼的這一行中找到它:

formData.append('files', inputEl.files.item(i));

使用 ng2-file-upload 時,如何將表單數據鍵名稱添加/更改為“文件”?

這是我的 ng2-file-upload 代碼:

    function readBase64(file): Promise<any> {
    var reader  = new FileReader();
    var future = new Promise((resolve, reject) => {
      reader.addEventListener("load", function () {
        resolve(reader.result);
      }, false);

      reader.addEventListener("error", function (event) {
        reject(event);
      }, false);

      reader.readAsDataURL(file);
    });
    return future;


    }

    const URL = 'mySecretUrl';

    private uploader:FileUploader = new FileUploader({
      url: URL, 
      disableMultipart:true
    });

    public hasBaseDropZoneOver:boolean = false;
    fileObject: any;

    public fileOverBase(e:any):void {
      this.hasBaseDropZoneOver = e; 
    }

    public onFileSelected(event: EventEmitter<File[]>) {
      const file: File = event[0];

      console.log(file);

      readBase64(file)
        .then(function(data) {
        console.log(data);
      })
    }

和 html:

<input type="file" ng2FileSelect [uploader]="uploader" multiple (onFileSelected)="onFileSelected($event)"  />

編輯:

我想我的問題的答案是:

    public uploader: FileUploader = new FileUploader({
        ...
        itemAlias: 'files'
        ...
    })

...但是當我嘗試上傳時,我仍然收到 500(內部服務器錯誤)...

如果服務器端出現問題,通常會出現500錯誤。 嘗試查看您的 API 端點是否配置正確。

暫無
暫無

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

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