Используя nz-upload т.е. (используя ant-design NG-Zorro) пользовательский запрос, как загрузить изображение

Я использую муравей NG_ZORRO для угловых 6 приложений. Я создал компонент для загрузки изображения с помощью nz-upload. Теперь я хочу использовать пользовательский запрос для загрузки изображения, который содержит действие, и запросить заголовки для загрузки изображения.

2 ответа

Это фрагмент кода игровой площадки:

  • Прежде чем начать, убедитесь, что ваши перехватчики HTTP-запросов (если таковые имеются) не изменяют заголовки

ШАБЛОН:

<nz-upload [nzCustomRequest]="customUploadReq" [nzHeaders] = "setMediaUploadHeaders" [nzName]="'file'">
</nz-upload>

Файл TS

/* nzUpload: Upload */
import { NzMessageService, UploadFile } from 'ng-zorro-antd';
import { BrowserModule, DomSanitizer } from '@angular/platform-browser'
/* nzUpload: Custom pre-upload checks */
import { /*Observable,*/ Observer } from 'rxjs'; 
/* nzUpload: Custom Upload request */
import { HttpRequest, HttpClient, HttpEventType, HttpEvent, HttpResponse } from '@angular/common/http';
import { UploadXHRArgs } from 'ng-zorro-antd';


  setMediaUploadHeaders = (file: UploadFile) => {
    return {
      "Content-Type": "multipart/form-data",
      "Accept": "application/json",
    }
  };
  customUploadReq = (item: UploadXHRArgs) => {
    const formData = new FormData();
    formData.append('file', item.file as any); // tslint:disable-next-line:no-any
    ///formData.append('id', '1000');
    const req = new HttpRequest('POST', item.action, formData, {
      reportProgress : true,
      withCredentials: false
    });
    // Always return a `Subscription` object, nz-upload will automatically unsubscribe at the appropriate time
   return this.http.request(req).subscribe((event: HttpEvent<{}>) => {
      if (event.type === HttpEventType.UploadProgress) {
        if (event.total > 0) {
          (event as any).percent = event.loaded / event.total * 100; // tslint:disable-next-line:no-any
        }
        // To process the upload progress bar, you must specify the `percent` attribute to indicate progress.
        item.onProgress(event, item.file);
      } else if (event instanceof HttpResponse) { /* success */
        item.onSuccess(event.body, item.file, event);
      }
    },(err) => { /* error */
      item.onError(err, item.file);
    });
  }

На примере Aliyun OSS , который можно найти здесь

Вы можете определить

       UploadData = {

    host: 'YOUR_URL',
    custom_field_1:"value"

  };

Затем вы можете получить поля

        getExtraData = (file: NzUploadFile): {} => {
    const { custom_field_1} = this.UploadData;

    return {
      custom_field_1
    };
  };

Убедитесь, что вы изменили свою директиву

      [nzAction]="UploadData.host"
Другие вопросы по тегам