【问题标题】:How to get uploaded file in Flask?如何在 Flask 中获取上传的文件?
【发布时间】:2020-02-23 12:58:59
【问题描述】:

目前,我想从前端上传一些图片到后端, 我可以正确上传这些图片,但我不知道如何在后端获取这些照片。 在这里,我在前端使用 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 中?

【问题讨论】:

标签: javascript python flask file-upload


【解决方案1】:

您必须使用 request.files.getlist。有关详细信息和进一步改进,请参阅/how-to-upload-multiple-files-using-flask-in-python

【讨论】:

  • 谢谢你的回答,我发现问题出在前端,我在使用formdata时不应该指定内容类型
【解决方案2】:

其实我又查了一遍代码,发现是前端的问题,使用表单数据发送请求时,不应该使用header"Content-Type": "application/json",而是将表单数据放在body中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-09
    • 2017-06-12
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 2020-08-17
    • 2019-01-16
    • 2019-04-05
    相关资源
    最近更新 更多