【问题标题】:Python Flask API Returning CSV Content But File Not Downloading (Google Chrome)Python Flask API 返回 CSV 内容但未下载文件(谷歌浏览器)
【发布时间】:2020-11-19 14:11:10
【问题描述】:

我编写了一个 API,用于根据用户在 Web 应用程序中填写表单的内容向用户返回 CSV。运行下面的代码时,我可以在控制台中看到响应,并确定我的 API 正确返回了内容,但我似乎无法让文件自动开始下载。任何建议将不胜感激!

csv = final_df.to_csv()
response = make_response(csv)
response.headers['Content-Disposition'] = "attachment; filename=export.csv"
response.headers['Content-type'] = "application/force-download"
return response

【问题讨论】:

  • 也许this 会帮助你解决你的问题

标签: python flask http-headers downloadfile


【解决方案1】:

我的一个工作示例的不同之处在于引用了文件名(Developer Docs 暗示是必需的),并使用了正确的 mimetype。

试试

return bytes(csv, encoding='UTF-8'), 200, {
    'Content-Type': 'text/csv',
    'Content-Disposition': 'attachment; filename="export.csv"'}

【讨论】:

  • 不幸的是,使用此解决方案强制下载仍然没有运气。在 Chrome、IE 和 Firefox 中测试。
  • 我注意到我从中提取的代码仍然是 Python2.7,并对 Python3 进行了一次更改(对 bytes() 调用)。它适用于 Chrome 和 Firefox。
  • 谢谢戴夫。我想知道我的网络设置是否可能会阻止下载,因为我还添加了一个编码来运行解决方案。我最终保留了您的解决方案以返回我的回复,但不得不在客户端编写一些东西来提示文件下载。
猜你喜欢
  • 1970-01-01
  • 2015-04-16
  • 2021-12-28
  • 1970-01-01
  • 2014-07-16
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
相关资源
最近更新 更多