烧瓶request.files为空

Dan*_*iel 5 python flask

就像这个问题一样,我正在尝试按照简单的Flask教程将文件上传到Flask服务器。在我的特定情况下,我正在尝试上传XML文件。

我正在使用的(简体)HTML是:

<form action="" method="post" enctype="multipart/form-data">
    <input type="file">
    <input type="submit" value="Let's go!">
</form>
Run Code Online (Sandbox Code Playgroud)

该请求由一个if request.method == 'POST':块正确处理,因此我放入了一些打印语句来进行故障排除:

print('request.method', request.method)
print('request.args', request.args)
print('request.form', request.form)
print('request.files', request.files)
Run Code Online (Sandbox Code Playgroud)

结果是:

request.method POST
request.args ImmutableMultiDict([])
request.form ImmutableMultiDict([])
request.files ImmutableMultiDict([])
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?如果需要,我可以提供更完整的源代码。

Dan*_*iel 10

和往常一样,我在发布此问题后仅几分钟就找到了答案。我在这里回答是希望能帮助其他人。

问题是我的文件输入没有name属性。感谢Ben在这里,我能够通过name在文件输入中添加属性来解决此问题,现在文件上传已得到正确处理。

  • 对于通过搜索定向到此问题的任何其他人,如果您未在表单上设置“enctype =“multipart/form-data””(您已这样做),“request.files”也将返回空。我知道这不适用于您的具体情况,这就是为什么我将其保留为评论而不是答案,但这是“request.files”显示为空的另一个好理由。 (17认同)