Angular 7 Размещать содержимое файла как multipart / form-data - PullRequest
2 голосов
/ 19 апреля 2019

У меня есть содержимое, которое я хочу POST, доступно в виде строковой переменной.Я хочу использовать:

import { HttpClient } from '@angular/common/http'

... для достижения того же эффекта, что и:

curl -F "image=@blob.bin" someurl.com

... где содержимое моей строковой переменной будет тем, что может бытьв локальном файле с именем `blob.bin.Я не уверен, как это сделать, но это не не работает:

this.http.post('http://someurl.com', fileContents)

Как вы получаете этот эффект, используя Angular 7 и сервис HttpClient?У меня нет фактической HTML-формы, с которой я взаимодействую, у меня просто есть некоторый предписанный двоичный / строковый контент, который мне нужно опубликовать , как если бы он был представлен формой, которая выглядит как (которая являетсятак же, как и приведенный выше локон):

<form method='POST' action='http://someurl.com' enctype='multipart/form-data'>
  <input type='file' name='update'>
  <input type='submit' value='Update'>
</form>

Я уверен, что этого можно достичь, просто имея проблемы с выполнением правильных заклинаний.

1 Ответ

1 голос
/ 19 апреля 2019

Использование FormData

const formData: FormData = new FormData();
formData.append('files', this.logo, this.logo.name);
this.http.post("upload", formData)

В этом примере this.logo - это объект File. Вы можете получить объект file из вашего ввода следующим образом:

<input (change)="handleLogoFileInput($event.target.files)" type="file" name="update />

и в файле компонента:

handleLogoFileInput(files: FileList) {
  this.logo = files[0];
}
...