Formdata返回空白对象

时间:2018-04-12 15:57:56

标签: javascript typescript angular5

我正在使用角度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; 
        });
}

}

它简单的代码但不适合我。 我错过了要包含的内容吗?

2 个答案:

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

包裹它