嗨,我正在尝试在Tornado中使用StaticFileHandler,并且大部分情况下都可以使用它,除了单击下载时在网页中输出文件(.csv)之外。我保存文件的唯一方法是右键单击并说将目标另存为(但这并非在所有浏览器中都有效)。

如何强制下载文件?
我知道我需要以某种方式设置StaticFileHandler的标头:

    self.set_header('Content-Type','text-csv')
    self.set_header('Content-Disposition','attachment')


但是我不知道如何设置它,因为它是默认处理程序。

谢谢你的时间!

最佳答案

扩展web.StaticFileHandler

class StaticFileHandler(web.StaticFileHandler):
    def get(self, path, include_body=True):
        if [some csv check]:
            # your code from above, or anything else custom you want to do
            self.set_header('Content-Type','text-csv')
            self.set_header('Content-Disposition','attachment')

        super(StaticFileHandler, self).get(path, include_body)


不要忘记在处理程序中使用扩展类!

09-27 08:43