我正在使用角度5,新的角度,但我已经在javascript框架很多。 我在下面的一个问题中遇到的是我现在面临的描述事情。
我创建了表单,我想在提交时发送给服务器,我试图附加由所有输入字段名称和值组成的Formdata对象,但在处理请求时我的脚本发送空对象。
这是我写的代码:
uploadBannerCreative(event) {
const formData = new FormData();
formData.append("data", "value");
let headers = new Headers();
headers.append('Content-Type', 'multipart/form-data');
headers.append('Accept', 'application/json');
this._uploadService.upload(formData,headers).subscribe(
data => {
if(data.success == true) {
}
},
error => {
}
);
}
以下是向服务器发送数据的服务
@Injectable() 导出类UploadCreativeService {
constructor(private http: Http) {
}
upload(data,headers) {
return this.http.post('url', JSON.stringify(data),{headers:headers})
.map((response: Response) => {
return Response;
});
}
}
它简单的代码但不适合我。 我错过了要包含的内容吗?
答案 0 :(得分:2)
headers.append('Content-Type', 'multipart/form-data');
不要那样做。当您将XMLHttpRequest和fetch传递给FormData对象时,它们将自动生成Content-Type头。手动提供一个将覆盖该设置。在这种情况下,(必填)boundary
参数丢失。
JSON.stringify(data)
不要那样做。将FormData对象本身传递给XMLHttpRequest或fetch。它不是JSON.stringify可以处理的对象。
答案 1 :(得分:0)
也许回答为时已晚,但我希望这可以对以后来此帖子的人有所帮助。
只需删除所有headers属性,这对我有用。
如果它是FormData
,只需将其解析为正文,
不要用json stringify