ng2-file-upload: Как изменить имя данных формы для загрузки файла - PullRequest
0 голосов
/ 01 апреля 2019

Я сейчас использую этот код для загрузки файла (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% уверен, что проблема заключается в имени файла «files», которое вы найдете в этой строке в старом коде:

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

Как добавить / изменить имя ключа формы-данных на 'files'при использовании 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)"  />

EDIT:

Наверное, ответ на мой вопрос:

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

... Но я все равно получаю 500 (внутренняя ошибка сервера), когда я пытаюсь загрузить ...

...