Я использую Angular 8 и пружинный ботинок. Если я загружаю изображение и объект из Почтальона, он успешно загружается. Если я попробую то же самое с Angular, то произойдет сбой, и ошибка будет
[org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/octet-stream' not supported]
Если я установлю заголовки на следующие в Angular
var options = { headers: new HttpHeaders().set('Content-Type', 'application/json;charset=UTF-8') };
return this.http.patch(`${environment.apiUrl}products/`, data, options);
, я все равно получу ошибку
[org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json;charset=UTF-8' not supported]
Вот контроллер Spring Boot
@PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@PreAuthorize("hasRole('USER')")
public ResponseEntity<?> create(
@RequestPart(value = "file", required = false) MultipartFile file,
@RequestPart(value = "product") @Valid ProductDTO productDTO) throws IOException
In Angular Это вход для загрузки файла
<input type="file" id="file" (change)="handleFileInput($event.target.files)" accept="image/*">
В компоненте
fileToUpload: File = null;
Это функция загрузки файла
handleFileInput(files: FileList) {
this.fileToUpload = files.item(0);
}
В методе отправки
const formData = new FormData();
formData.append('file', this.fileToUpload);
formData.append('product', this.form.value);
Все это происходит в Angular и Spring, но в Postman успешно обновляется.
В почтальоне