【发布时间】:2016-09-07 13:41:19
【问题描述】:
我需要上传一个文件并发送一些json,我有这个功能:
POST_formData(url, data) {
var headers = new Headers(), authtoken = localStorage.getItem('authtoken');
if (authtoken) {
headers.append("Authorization", 'Token ' + authtoken)
}
headers.append("Accept", 'application/json');
headers.delete("Content-Type");
var requestoptions = new RequestOptions({
method: RequestMethod.Post,
url: this.apiURL + url,
headers: headers,
body: data
})
return this.http.request(new Request(requestoptions))
.map((res: Response) => {
if (res) {
return { status: res.status, json: res.json() }
}
})
}
我的问题是,如果我将 content-type 设置为“multipart/form-data”,我的服务器会抱怨边界,如果我完全删除 content-type 标头,我的服务器会抱怨它“text/plain”是受支持的媒体输入。
那么,如何使用 angular2 发送 FormData?
【问题讨论】:
-
现在不支持 FormData。我可以在
Request类中看到一条待办事项评论// TODO: support URLSearchParams | FormData | Blob | ArrayBuffer -
用 Angular 2 做你现在所拥有的应该可以工作
-
请注意,headers.delete("Content-Type") 对于文件上传非常重要。我正在这样做: headers.set("Content-Type", "") ,但这会导致角度用逗号附加 multipart/form-data 字符串(这将使其格式错误。我花了一整天的时间寻找对于这个解决方案。谢谢!
标签: angular typescript file-upload angular2-http