【问题标题】:Download excel to open in browser instead of downloading directly? Python & Flask下载excel在浏览器中打开而不是直接下载?蟒蛇和烧瓶
【发布时间】:2021-01-31 18:34:15
【问题描述】:

我可以在浏览器中打开一个 excel 文件以供查看而不是下载,并有一个下载按钮,类似于 PDF 吗?

我正在使用 Python Flask,我使用的是 PDF:

@blueprint_name.route("/download_some_pdf", methods=["GET"])
def download_pdf():
  return send_file(file_path, cache_timeout=1)

这将在浏览器选项卡中使用下载 PDF 按钮打开 PDF

对于 Excel 文件:

@blueprint_name.route("/download_some_xlsx", methods=["GET"])
def download_xlsx():
  return send_from_directory(dir_path, filename, as_attachment=True, cache_timeout=1)

如果对于 Excel,我删除了 as_attachment 参数,或者我使用了 send_file 而不是 send_from_directory,它仍然会下载文件,但使用方法的名称(“download_xlsx”)而不是文件名!!

我正在使用 Python 3.8.3 和 Flask 1.1.2

【问题讨论】:

  • 大多数浏览器都有内置的 PDF 查看器。大多数都没有内置的 Excel 查看器,因此除非您自己以 HTML 格式呈现 Excel 文件,否则您不太可能拥有可以在浏览器中打开的表示形式。
  • 也许有一个用于 Excel 的 HTML 查看器,它与 Google PDF 查看器一样简单易用,它会自动附带下载 btn 和导航?

标签: python excel flask


【解决方案1】:

据我所知,是否打开文件取决于客户端浏览器。我遇到了一个浏览器无法阅读pdf并直接下载它。因此,一旦您将文件设置为具有“GET”属性,接收者就可以将其打开或简单地将其保存在目录中。此外,“打开pdf”只有在文件已经完全下载到浏览器设置的临时目录后才会发生。

【讨论】:

  • 是的,我在 Chrome 上试过了,PDF 可以,但 Excel 不行。
  • @yldm 如果您之前点击了此端点,添加了 attachmentcache_timeout 参数,可能是您的浏览器正在播放。快速修复可能是清除缓存。或者在浏览器开发工具的网络选项卡上右击请求,点击Resend。我已经在 this answer 和 cmets 中进一步解释了这一点。
猜你喜欢
  • 1970-01-01
  • 2019-08-24
  • 2019-01-20
  • 1970-01-01
  • 2011-11-08
  • 2012-08-18
  • 2019-03-08
相关资源
最近更新 更多