spring-boot - 如何以角度 6 发送多部分请求?
问题描述
我需要发送一个多部分请求。
当我提交表单时,我从后端收到以下错误,
处理程序执行导致的已解决异常:org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/octet-stream' not supported
我可以从高级休息客户端访问,但面临角度问题。
下面的后端是 REST 端点。
@PostMapping("/createCIF")
public Response < Map < String, Object >> createCIF(
@RequestPart("actDocs") List < MultipartFile > actDocs,
@Valid @RequestPart("createCIFReq") CreateCIFReq createCIFReq,
HttpServletRequest request) throws URISyntaxException {
}
下面是 component.ts 文件中的 angular side 代码。
let formData = new FormData();
formData.append('actDocs', this.userInfoService.mulitPartFileArray);
formData.append('createCIFReq', JSON.stringify(this.userInfo));
this.userInfoService.createCif(formData)
.pipe(first())
.subscribe(
data => {
}
}
Angular 端服务级别代码
createCif(formData): any {
return this.http.post<any>(this.url + 'createCIF',
formData)
.pipe(map(cif => {
return cif;
}));
}
解决方案
我被这个问题困扰了一整天。
Angular 似乎无法为 JSON 部分设置正确的内容类型。我设法通过创建一个 Blob 来解决这个问题:
let formData = new FormData();
formData.append('actDocs', this.userInfoService.mulitPartFileArray);
formData.append(
'createCIFReq',
new Blob([JSON.stringify(this.userInfo)], {type: 'application/json'})
);
希望能帮助到你。
推荐阅读
- angular - agm-info-window infoWindow 默认打开 angular ionic3
- python - 神经网络 pytorch
- xslt - 从 XSLT 调用的 Java 方法返回带有双引号的字符串
- android - 单击标记时获取标记详细信息
- c# - C# 未处理的异常“必须在创建第一个 IWin32Window 对象之前调用 SetCompatibleTextRenderingDefault”
- header - Angular6 - 从一个http请求到另一个http请求的响应标头的值作为没有嵌套订阅的选项
- azure-active-directory - 如何使用带有 adal.js 的隐式授权流从 Azure AD 获取 referhTokens
- angular - 查询单个文档的firebase数据库
- python - 如何在 Django 中建模映射表
- java - 如何将复杂的字符串写入 Gson 类