Angular 7 Post 文件内容作为 multipart/form-data

标签 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 表单,我只有一些规定的二进制/字符串内容,我需要将其发布,就好像它是由看起来像的表单提交的一样(与 curl以上确实):
<form method='POST' action='http://someurl.com' enctype='multipart/form-data'>
  <input type='file' name='update'>
  <input type='submit' value='Update'>
</form>

我相信它可以实现,只是在执行正确的咒语时遇到了麻烦。

最佳答案

使用 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];
}

关于Angular 7 Post 文件内容作为 multipart/form-data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55754178/

相关文章:

angular - ngx-bootstrap 下拉菜单在移动 View 中嵌套子菜单

ios - Jsonobject + 图像多部分 AFNetworking

angular - 如何在输入字段中的 2 位数字 Angular 4 之后添加破折号/连字符

javascript - 网站无法在某些 IOS 设备上呈现 [白屏死机?]

Angular4如何使用flatMap链接forkJoin

javascript - 通过接受文件作为 Blob 并需要多部分表单数据的 API 在 Angular 中上传文件

c# - 是否可以在不等待整个表单到达的情况下访问通过 multipart/form-data 发送的参数

c# - 在 C# 中,将附件发布到 Confluence REST API 的正确方法是什么?

java - Android:上传字符串到服务器

c# - 我应该将 Using 语句与 HttpClient 一起使用吗?