Spring Rest Controller
@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);
}
Angular Service
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 Controller я меняю тип параметра User на String, он работает, и несколько файлов могут читатьиз Spring rest controller.
Spring rest: пользовательский объект
{"avatar":"","username":"","gender":"male","country":[],"about":"sdf"}
Вопрос: Как отправить запрос из Angular, чтобы в Spring я мог получить пользовательский объект вместо String.