Как я могу отправить файл, используя запрос HTTP POST как formData? - PullRequest
0 голосов
/ 15 июня 2019

Я использую Swagger 2.0 для документирования своего API.Я определил ресурс / getsize, как показано в следующем фрагменте кода:

    post:
      operationId: users.getSize
      tags:
        - Users
      summary: Measure your body
      description: import a photo
      consumes:
         - multipart/form-data
      parameters:
        - in: formData
          name: image1
          type: file
          required: true
        - in: path
          name: height
          type: number
          required: true

Когда я пытаюсь отправить запрос от интерфейса пользователя sawgger, я получаю ожидаемый результат.Но проблема возникает, когда я пытаюсь получить доступ к этому ресурсу с помощью компонента angluar, здесь фрагмент кода файла component.ts:

onSubmit() {
    const formData = new FormData();
    formData.append('image1', this.image);
    console.log(formData.getAll);
    console.log(this.image);
    this.http.post(endpoint,formData);
    .subscribe(res => {
        console.log(res);
        alert('SUCCESS !!');
      })
}

Ответ сервера:

error:
detail: "Missing formdata parameter 'image1'"
status: 400
title: "Bad Request"
type: "about:blank"

Есть предложения?

1 Ответ

1 голос
/ 15 июня 2019

Вы можете сделать это, используя URLSearchParams в качестве тела запроса, и angular автоматически установит тип контента на application / x-www-form-urlencoded и правильно закодирует тело.

В этом посте подробно объясняется ответ

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