【问题标题】:Upload file on the server through REST API通过 REST API 在服务器上上传文件
【发布时间】:2019-07-29 13:07:47
【问题描述】:

我正在尝试通过 REST API 在服务器上上传文件。我的 api 请求 FormData 模型,但我收到 400 bad request 错误。

来自我在 devtools 中的请求的负载

------WebKitFormBoundaryvPiRGxMC3Ru3AoFA 内容处置:表单数据;名称=“文件”;文件名="test.jpg" 内容类型:image/jpeg

------WebKitFormBoundaryvPiRGxMC3Ru3AoFA--

来自我的文档的负载

文件:(二进制)

看看下面的一些代码。

上传.component.html

<input type="file" accept="image/*" (change)="onFileChange($event)">

上传.component.ts

uploadForm = this._fb.group({
    profile: ['']
});
formData: FormData = new FormData();
...
onFileChange(event): void {
    if (event.target.files && event.target.files.length) {
        const file = event.target.files[0];
        this.uploadForm.get('profile').setValue(file);
    };
}
...
upload() {
    this.formData.append('file', this.uploadForm.get('profile').value);
    // API REQUEST
}

`

这是将我的输入值更改为FormData 的好方法吗?

【问题讨论】:

  • 你遇到了什么错误?
  • 400 bad request pasteboard.co/IqdTuZ0.png 我的请求中的有效负载和我的文档中的有效负载pasteboard.co/IqdU0a0.png
  • 所有这些信息都应该出现在您的问题中。尽可能避免使用外部链接。
  • 当然,我的错。已编辑。
  • 问题已解决。 Http 标头Content-Type 被硬编码为application/json。但这应该取决于请求类型。谢谢@Ramachandran,你的提示很重要。

标签: angular typescript


【解决方案1】:

请您更改您的代码

this.formData.append('file', this.uploadForm.get('profile'.value);

this.formData.append('file', this.uploadForm.get('profile').value);

【讨论】:

  • 有问题,抱歉。在本地我得到了('profile').value
猜你喜欢
  • 2016-07-03
  • 1970-01-01
  • 2014-07-17
  • 2023-03-10
  • 1970-01-01
  • 2014-12-19
  • 2021-06-07
  • 1970-01-01
  • 2016-02-06
相关资源
最近更新 更多