首页 > 解决方案 > 如何以角度 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;
     }));
   }

标签: spring-bootangular6multipartform-datamultipart

解决方案


我被这个问题困扰了一整天。

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'})
);

希望能帮助到你。


推荐阅读