Отправить файл (изображение) из Angular 8 в Spring Boot App - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу отправить файл из моего приложения angular 8 на мой весенний загрузочный сервер

Я пробовал весной - MultiPartFile, HttpServletRequest и некоторые другие методы безуспешно.

I надеюсь, кто-нибудь подскажет мне, как получить файл весной ... и, если понадобятся изменения в моем приложении angular.

Angular 8

<input ngModel type="file" name="file" (change)="fileChange($event)" class="form-control-file" id="exampleInputFile" aria-describedby="fileHelp" required>
fileChange(event) {
    this.imageMentor = event.target.files[0];
  }

при Я отправляю файл - в компоненте

onFormSubmitMentor() {

    const dataImage = new FormData();
    dataImage.append('myFile', this.imageMentor, this.imageMentor.name);
    this.useDetailsService.addMentor(dataImage).subscribe(data => {
      }, Error => {
        if (Error.error.error === 'Unauthorized') {
          alert('Unauthorized');
        }
      });
  }

сервис

addMentor(dataImage) {
    const token = JSON.parse(localStorage.getItem('currentUser'));
    let headers = new HttpHeaders();
    headers = headers.append('Authorization', 'Bearer ' + token.token);
    headers = headers.append('Content-type', 'application/json');
    console.log(dataImage);
    return this.http
      .post(
        'http://localhost:8080/register/mentor',{file: dataImage}, {headers, responseType: 'text'}
      ).pipe(map((response: any) => {
        console.log(response);
        return response;
      }), catchError((err: any) => {
        console.log(err);
        return throwError(err);
      }));
  }

Spring boot

@RequestMapping(value = "/register/mentor", method = RequestMethod.POST,consumes = "application/json")
    @ResponseBody
    public ResponseEntity<?> registerMentor(HttpServletRequest request) throws Exception {
//        connectionValidation.isAdmin();
        StringBuilder builder = new StringBuilder();
        try (BufferedReader in = request.getReader()) {
            char[] buf = new char[4096];
            for (int len; (len = in.read(buf)) > 0; )
                builder.append(buf, 0, len);
        }
        String requestBody = builder.toString();
        return saveMentorUser(new Mentor());
//        return saveMentorUser(mentor);
    }

и я попробовал это

https://medium.com/@udith.indrakantha / закачивать-изображения-и-копи-их-в-database- angular -8-весна-загрузочные mysql -b5144768202b

Ответы [ 2 ]

1 голос
/ 03 мая 2020

Я посмотрел в Heroku CLI, и я понял, что это не проблема cors, но одна из моих функций весной вызывает ошибку, которая соединяется с Mon go, но я думаю, что heroku не понял этого и ответил на проблему cors.

0 голосов
/ 22 апреля 2020

Содержимое заголовков устанавливается как JSON, возможно, его необходимо установить как данные формы в качестве данных формы передачи.

    headers = headers.append('Content-type', 'multipart/form-data');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...