Angular 8 Springboot Загрузка файла безнадежна - PullRequest
0 голосов
/ 25 февраля 2020

Google 'Angular 8 Загрузка файла Springboot'. Я попробовал первые 3 страницы. Не удалось загрузить чертов файл.

Самое большое, что я получил, было:

Решено [org.springframework.web.multipart.MultipartException: текущий запрос не является составным запросом]

Перепробовал все, что мог.

Я просто хочу отправить файл с Angular и получить его в контроллере пружинной загрузки. Может ли кто-нибудь помочь мне с этим?

Бэкэнд:

@PostMapping("/users/profile/upload")
@ResponseStatus(HttpStatus.OK)
public ResponseEntity<String> uploadData(@RequestParam("file") MultipartFile file)
        throws Exception {
    if (file == null) {
        throw new RuntimeException("You must select the a file for uploading");
    }
    String originalName = file.getName();

    // Do processing with uploaded file data in Service layer
    return new ResponseEntity<String>(originalName, HttpStatus.OK);
}

Фронт-сервис:

uploadFile(file: File): Observable<any> {

const formData = new FormData();

formData.append('file', file, 'file');
const headers = new HttpHeaders({
  'Content-Type': 'multipart/form-data'
});
const options = { headers };

return this.http.post(`${this.baseUrl}/profile/upload`, formData, options);
}

1 Ответ

1 голос
/ 26 февраля 2020

Ваш код выглядит хорошо для меня. Вам не нужно добавлять заголовки в Angular, и вам не нужно отправлять options, но я не думаю, что это имеет значение.

Интересно, действительно ли Angular отправляет файл. Вы можете проверить с помощью console.log(file), который вы можете добавить в свой интерфейсный сервис.

Вы также можете проверить, что входит в Spring Boot. Как насчет изменения подписи на

public ResponseEntity<String> uploadData(HttpServletRequest request) throws Exception

Это позволяет вам просить рентген и посмотреть, что происходит. Я надеюсь, что эти указатели полезны.

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