【问题标题】:Upload a JSON Object (User information) and Multiple Image with single request. Angular + Spring Boot使用单个请求上传 JSON 对象(用户信息)和多个图像。角+弹簧靴
【发布时间】:2018-10-31 22:32:47
【问题描述】:

弹簧休息控制器

 @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
        public ResponseEntity<PersonDTO> createPerson(@RequestParam("user") User personDTO, @RequestParam("file") MultipartFile[] file){

      return new ResponseEntity<>(null, responseHeaders, HttpStatus.OK);
    }

角度服务

createPerson(personClass : User, files : File[]): Observable<HttpEvent<{}>>{

  let formdata: FormData = new FormData();

  //Get Cities 
  var obj = JSON.parse(JSON.stringify(personClass.city));
  var myObj = {avatar:personClass.avatar,username:personClass.username , gender:personClass.gender, country:personClass.country, city:obj.code, about:personClass.about};

  //get upload images
  let fileCount: number = files.length;
  if (fileCount > 0) { // a file was selected
      for (let i = 0; i < fileCount; i++) {
          formdata.append('file', files[i]);
      }
  }


  const userBlob = new Blob([myObj],{ type: "application/json"});

  // User object to FormData
  formdata.append('user',JSON.stringify(myObj));


 return this.http.post(`${this.webServiceEndpoint}/person`,formdata)
 .map(res => res.json() )
 .catch(this.handleError);

}

请注意:如果在 Spring rest 控制器中我将参数类型 User 更改为 String 它可以工作,并且可以从 Spring rest 控制器中读取多个文件。

弹簧休息:用户对象

 {"avatar":"","username":"","gender":"male","country":[],"about":"sdf"}

问题:如何从 Angular 发送请求,以便在 Spring 上我可以获取用户对象而不是字符串。

【问题讨论】:

标签: angular spring-boot multipartform-data angular2-services


【解决方案1】:
public ResponseEntity<PersonDTO> createPerson(@RequestParam("user") User personDTO, @RequestParam("file") MultipartFile[] file){

需要改成

public ResponseEntity<PersonDTO> createPerson(@RequestPart("file") MultipartFile[] file, @RequestPart("user") User personDTO){

让 spring boot 知道这些参数将作为单独的部分出现。

【讨论】:

    猜你喜欢
    • 2018-05-25
    • 2020-08-06
    • 2018-07-22
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2019-05-17
    • 1970-01-01
    相关资源
    最近更新 更多