首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在flask+html中提交多个输入文件

无法在flask+html中提交多个输入文件
EN

Stack Overflow用户
提问于 2017-05-24 20:24:43
回答 2查看 609关注 0票数 1

我正在尝试使用HTML将多个文件上传到我的flask应用程序中。我使用了下面的html表单。

代码语言:javascript
运行
复制
<form action="url", method="POST", enctype="multipart/form-data">
      <font size="2">
        File2: <input type=file name=file1><br/>
        File1: <input type=file name=file2><br/>
      </font>
      <input type="submit" value="Submit">
      <input type="reset" value="Reset">
    </form>

并且这些文件在Flask包中被读取为

代码语言:javascript
运行
复制
@app.route('/process_data', methods=["POST"])
def process_data():
    print request.files

当我测试它时,我只上传了一个文件,这运行得很好,但是当我上传两个文件时,我可以看到request.files字段为空。

我不能从一个表单上载多个文件到flask?

EN

回答 2

Stack Overflow用户

发布于 2017-05-24 20:45:45

你必须使用,getlist

代码语言:javascript
运行
复制
@app.route('/process_data', methods=["POST"])
def process_data():
   uploaded_files = request.files.getlist("file[]")
   print uploaded_files
票数 1
EN

Stack Overflow用户

发布于 2017-05-24 20:46:19

实际上,request.files不是空的,它会是这样的ImmutableMultiDict

代码语言:javascript
运行
复制
ImmutableMultiDict([('file1', <FileStorage: 'test1.jpg' ('image/jpeg')>),  ('file2', <FileStorage: 'test222.jpeg' ('image/jpeg')>)])

您可以使用以下命令将其转换为字典:

代码语言:javascript
运行
复制
dict(request.files)

那么它将是:

代码语言:javascript
运行
复制
{'file1': [<FileStorage: 'test1.jpg' ('image/jpeg')>], 'file2': [<FileStorage: 'test222.jpeg' ('image/jpeg')>]}

然后,您可以从此处访问file1file2

如果你想上传多个文件,建议这个answer对你来说会更清楚,但你必须用以下命令更改你的html:

代码语言:javascript
运行
复制
<input type="file" name="file[]" multiple="">
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44158365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档