如何在CherryPy中允许下载动态创建的文件?
我正在尝试使用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>"'
这个头信息。