【问题标题】:Read-in Files from Flask request module从 Flask 请求模块读取文件
【发布时间】:2020-03-18 19:51:38
【问题描述】:

我正在尝试从 Python 请求中读取文件,形成数据。我要做的就是读入请求正文中的传入文件,解析内容并将内容作为 json 正文返回。我看到很多例子,比如:if 'filename' in request.files:,但这对我来说从来没有用过。我知道该文件实际上存在于 ImmutableMultiDict 类型中。这是我的工作代码示例:

if 'my_file.xls' in request.files:
    # do something

else:
    # return error

【问题讨论】:

  • ImmutableMultiDict([('', <FileStorage: 'my_file.xls' ('text/csv')>)]) 这是传入请求正文包含的内容
  • 你能添加所有需要的代码来让你的程序运行吗?
  • from flask import request, Response from create_app import my_app import json @my_app.route('/api-examples/file_parser') def get_file(): ` if 'my_file.xls' in request.files:` ` # do something` ` else:` ` # return error` # main sectionif __name__ == '__main__':`my_app.run(host='0.0.0.0', port=5000)`

标签: python file flask request


【解决方案1】:
if 'file' in request.files:

这是在寻找与您在表单中设置的name 属性相对应的字段名称'file'

  <input type='file' name='file'>

然后您需要执行类似的操作将FileStorage 对象分配给变量mem

mem = request.files['file']

请参阅my recent answer,了解更多详情和原因。

然后您可以通过以下方式访问文件名本身:

mem.filename # should give back 'my_file.xls' 

实际读取流数据:

mem.read()

official flask docs 对此有更多信息,以及如何使用secure_filename() 等保存到磁盘。可能值得一读。

我要做的就是读入请求正文中的传入文件,解析内容并将内容作为json正文返回。

如果您确实想读取该 Excel 文件的内容,则需要使用与此兼容的库,例如 xlrdthis answer 演示如何打开工作簿,将其作为流传递。请注意,他们使用fileobj 作为变量名,而不是mem

【讨论】:

  • 哇!感谢您的帮助:)
  • 没问题,如果这解决了您的问题,请考虑接受答案 :-)
猜你喜欢
  • 2015-12-18
  • 2020-05-20
  • 1970-01-01
  • 1970-01-01
  • 2016-10-20
  • 1970-01-01
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多