Загрузка изображения в сервис весеннего отдыха с использованием Angular - PullRequest
1 голос
/ 12 июля 2020

Я пытаюсь отправить http-запрос в свою службу весенней загрузки с типом содержимого x- wwww-form-urlencoded, но не уверен, что делаю неправильно.

Вот мой код angular :

img(desc:HTMLInputElement, selectedFile){
    let url = "http://localhost:8080/api/v1/upload_image"

    const body = new HttpParams()
    body.set("image", selectedFile)
    body.set("description", desc.value)

    return this.http.post<Isecurity[]>(url, body.toString(),{
      headers:new HttpHeaders()
      .set('Content-Type', 'application/x-www-form-urlencoded')
    } )
  }

и это моя служба Spring:

@PostMapping("upload_image")
@CrossOrigin
public  Map<String, Boolean> upload_image(@RequestParam MultipartFile image, @RequestParam String description) {
        Map<String, Boolean> values = new HashMap<>();
        values.put("response", true);
        return values;
}

Я получаю ошибку сервера 500. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 12 июля 2020

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

Вам нужно передать params, используя '?' после URL-адреса.

Итак, вам нужно обновить свой код в файле .ts, как следующие строки:

img(desc:HTMLInputElement, selectedFile){
    let url = "http://localhost:8080/api/v1/upload_image?"

    const body = new HttpParams()
    body.set("image", selectedFile)
    body.set("description", desc.value)

    return this.http.post<Isecurity[]>(url+body.toString(),{
      headers:new HttpHeaders()
      .set('Content-Type', 'application/x-www-form-urlencoded')
    } )
  }

Все дело в передаче параметров, но я думаю, вы должны взять изображение как тело , а не как параметры в остальном api.

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