Ошибка при загрузке изображения и JSON объекта из Angular в Spring Boot - PullRequest
0 голосов
/ 23 апреля 2020

Я использую 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 успешно обновляется.

В почтальоне enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...