angular - 在 angualr 中发送 multipart/form-data POST API 请求
问题描述
我正在通过多部分请求发送图像和其他表单数据。当我使用 PostMan 调用 api 时,图像已成功添加。但是当我使用角度代码调用相同的 API 时,我从后端收到错误消息。
组件.ts
addOffer() {
this.formData = new FormData();
this.formData.append('promotion', this.file, this.file.name);
this.formData.append("main_text", this.offerAddForm.controls['title'].value);
this.formData.append("type", '1');
this.formData.append("footer_text", 'rdy');
this._addOfferService.addOffer(this.formData)
.pipe(first())
.subscribe(
data => {
console.log("Yo yo "+data);
},
error => {
console.log("An Error Occurred add notify ", error);
});
}
服务.ts
addOffer(formData) {
const token = this.authService.getToken();
let headerOptions = new HttpHeaders({
'Content-Type': 'multipart/form-data',
'Authorization': 'Bearer '+token
});
const url = environment.baseURL + 'promotions';
return this.http.post<any>(url, formData, {headers: headerOptions})
.pipe(map(response => {
return response;
}));
}
更新: 来自后端的错误:
无效的促销类型。
请求有效载荷:
我在这里做错了什么?
解决方案
let urlSearchParams = new URLSearchParams();
urlSearchParams.append('cc', this.PayElement.CC);
// alert(urlSearchParams.toString());
this.appService.sendToOtherService('https://dddddd?ggg=dfdf&ddgg=5555,
urlSearchParams.toString()).then(res2 => {
//
}).catch(res3 => {
//
});
sendToOtherService(url: string, data: any): Promise<any> {
let headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded'});
let options = new RequestOptions({headers: headers});
return this.http.post(url, data, options).toPromise()
.then(response => response.json() as any)
.catch(this.handleError);
}
推荐阅读
- c# - 是否有可能从与 C3-400 连接的 ZKteco RS485 rfid 发送开门事件和读取密码
- javascript - Javascript .scrollTop 在 iOS Safari 中不起作用
- python - 如何在python3的列表理解中使用下一个迭代器来获取没有任何前导零的列表
- c# - 在一台设备上使用代码并使用推送通知与其他设备显示“结果”
- xml - 如何遍历多个 xml 文件解析它们并发送到 REST API
- java - 自定义区域设置 - 英文显示 - FRENCH DateFormat
- excel - 为什么 isnumber 搜索不能正确处理给定的数据?
- javascript - Unicode 正则表达式:编译失败:字符类中的范围无序
- python-3.x - Python 矢量化与 Julia for 循环
- git - Azure 门户 - 无法为 Web 应用程序中的部署槽设置部署