Angular 7将文件内容发布为多部分/表单数据

Angular 7将文件内容发布为多部分/表单数据,angular,httpclient,multipartform-data,Angular,Httpclient,Multipartform Data,我想发布的内容可以在字符串变量中找到。 我想使用: import { HttpClient } from '@angular/common/http' 。。。为了达到与以下相同的效果: curl -F "image=@blob.bin" someurl.com 。。。其中,字符串变量的内容可能位于名为`blob.bin的本地文件中。我不知道怎么做,但这不起作用: 如何使用Angular 7和HttpClient服务获得这种效果?我没有与之交互的实际HTML表单,我只是需要发布一些规定的二进制

我想发布的内容可以在字符串变量中找到。 我想使用:

import { HttpClient } from '@angular/common/http'
。。。为了达到与以下相同的效果:

curl -F "image=@blob.bin" someurl.com
。。。其中,字符串变量的内容可能位于名为`blob.bin的本地文件中。我不知道怎么做,但这不起作用:

如何使用Angular 7和HttpClient服务获得这种效果?我没有与之交互的实际HTML表单,我只是需要发布一些规定的二进制/字符串内容,就像它是由一个表单提交的一样(与上面的curl一样):



我确信这是可以实现的,只是在执行正确的咒语时遇到困难。

使用
FormData

const formData: FormData = new FormData();
formData.append('files', this.logo, this.logo.name);
this.http.post("upload", formData)
在本例中,
this.logo
是一个
文件
对象。您可以从输入中获取文件对象,如下所示:

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

我没有,我只有一个原始字符串/二进制。。。如何将其转换为文件对象以馈送到formData.append?我的错,我误读了。您可以使用
文件​读取器​.阅读​二进制的​String()
读取文件。获得文件后,上面的答案应该有效。原始字符串是base64编码的字节数组吗?或者我会给它一个文件名?@Pace它甚至不是base64编码,只是直接的二进制content@Sayegh我想出来了<代码>常量formData:formData=new formData();append('image',new Blob([fileContents],{type:'application/octet stream'}),'file.bin')
const formData: FormData = new FormData();
formData.append('files', this.logo, this.logo.name);
this.http.post("upload", formData)
<input (change)="handleLogoFileInput($event.target.files)" type="file" name="update />
handleLogoFileInput(files: FileList) {
  this.logo = files[0];
}