Angular 7将文件内容发布为multipart / form-data

时间:2019-04-18 21:55:38

标签: angular httpclient multipartform-data

我想在字符串变量中提供要发布的内容。 我要使用:

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 个答案:

答案 0 :(得分:1)

使用FormData

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

在示例中,this.logoFile对象。您可以像这样从输入中获取文件对象:

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

并在组件文件中:

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