如何在CherryPy中允许下载动态创建的文件?

1 投票
3 回答
1518 浏览
提问于 2025-04-17 02:11

我正在尝试使用CherryPy来搭建一个简单的网站,但之前从未做过Python的网页编程。

我现在遇到问题,想要让用户下载一个动态生成的文件。我可以创建一个文件并从处理程序返回它,或者对文件调用serve_fileobj(),但无论哪种方式,文件的内容都是直接显示在屏幕上,而不是下载下来。

CherryPy有没有什么有用的方法可以解决这个问题呢?我该怎么做才能实现这个功能?

3 个回答

1

把@varela和@JasonFruit之前的回答结合起来:

dynamic_content = "this was generated on the fly!"
cherrypy.response.headers['Content-Disposition'] = 'attachment; filename="<file>"'
return dynamic_content
3

如果你设置了正确的内容类型,当你返回内容时,就不需要担心它在浏览器中显示的问题,除非这是合适的。你可以试试:

response.headers['Content-Type'] = 'application/foo'

(或者根据你的内容选择正确的MIME类型)在返回内容之前设置它。

2

在响应中添加 'Content-Disposition: attachment; filename="<file>"' 这个头信息。

撰写回答