Как получить загруженный файл в Flask? - PullRequest
0 голосов
/ 28 октября 2019

В настоящее время я хочу загрузить несколько изображений из внешнего интерфейса в бэкэнд, и я могу правильно загрузить эти изображения, но я не знаю, как получить эти фотографии в бэкэнд. Здесь я загружаю изображения, используя FormData во внешнем интерфейсе

const url = "http://localhost:5000/hotel";
    const data = new FormData();
    var photos = document.querySelector("input[type='file'][multiple]");
    console.log(photos.files);
    data.append("photos", photos.files);
    fetch(url, {
      headers: new Headers({
        "Content-Type": "application/json"
      }),
      mode: "cors",
      method: "post",
      body: data
    });

, сейчас я пытался получить эти файлы в бэкэнде с помощью колбы.

@app.route('/hotel', methods=['POST'])
def add_hotel():
    print(request.form)
    print(request.data)
    print(request.files)

Результат печати примерно такой:

ImmutableMultiDict([])
b'------WebKitFormBoundaryo54yZ5CoNX8dQZZ3\r\nContent-Disposition: form-data; name="photos"\r\n\r\n[object FileList]\r\n------WebKitFormBoundaryo54yZ5CoNX8dQZZ3--\r\n'
ImmutableMultiDict([])

и я думаю, что эти изображения хранятся в request.data, но как я могу сохранить эти данные, как обычный файл в request.files?

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Собственно, я снова проверил свой код, обнаружил, что проблема во внешнем интерфейсе, при отправке запроса с использованием данных формы, вам не следует использовать заголовок "Content-Type": "application/json", а просто поместить данные формы в тело

0 голосов
/ 28 октября 2019

Вы должны использовать request.files.getlist. См. / как загрузить несколько файлов с помощью flask-in-python для получения подробной информации и дальнейших улучшений.

...