Мне нужно загрузить файлы, используя angular и пружинную загрузку.
Angular service:
const httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json;multi-part/form-data'})
};
addProduct(productRequest: ProductRequest, creator: string, tradeReference: string, selectedImage: File) {
const trimCreator = creator.trim();
const trimTradeReference = tradeReference.trim();
const formData = new FormData();
formData.append('images', selectedImage);
return this.http.post<any>(baseUrl + '/addProduct', {formData, productRequest, trimCreator, trimTradeReference} , httpOptions)
.pipe(
catchError(this.handleError)
);
}
и мой бэкэнд-сервис Rest является следующим:
@ApiOperation(value = "add product", response = Iterable.class)
@ApiResponses(value = { @ApiResponse(code = 200, message = "Successfully added product") })
@PostMapping("/addProduct")
public void addProduct(@RequestPart(value = "images") MultipartFile[] images,
@RequestPart(value = "product") Product product,
@RequestPart(value = "creator") @ApiParam(value = "creator") String creator,
@RequestPart(value = "tradeReference") @ApiParam(value = "tradeReference") String tradeReference
) throws Exception {
Arrays.asList(images)
.stream()
.forEach(image -> uploadImages(image, product));
traderServices.addProduct(product, creator, tradeReference);
}
Ошибка:
{"отметка времени": "2020-04-23T13: 35: 03.114 + 0000", "статус": 500, "ошибка": "Внутренняя ошибка сервера" , "message": "Текущий запрос не является составным запросом", "trace": "org.springframework.web.multipart.MultipartException: текущий запрос не является составным запросом \ r \ n \ tat org.springframework.web.servlet . mvc .method.annotation.RequestPartMethodArgumentResolver.resolveArgument (RequestPartMethodArgumentResolver. java: 158) \ r \ n \ tat, "путь": "/ api / trader / addProduct"}
* 1014 Я пытался обновить PostMapping так, как
@ PostMapping (value = "/ 'addProduct", потребляет = {MediaType.MULTIPART_FORM_DATA_VALUE, MediaType.APPLICATION_JSON_VALUE})
также я удалил потребляет информацию и информацию заголовка в angular сервисе, но он не работает.
с почтальоном отлично работает.
Так что не могу понять, почему это не работает!
Спасибо