【问题标题】:Cherrypy download serve_fileCherrypy 下载serve_file
【发布时间】:2022-06-19 06:45:45
【问题描述】:

我正在尝试创建一个 zip 文件并允许从网页下载它。我能够让它为文件提供服务,但不是在浏览器中下载,而是进行调用并将其作为响应的主体。我只想下载文件。

def download(self, **kwargs):
        filename = kwargs["filename"]
        path = os.path.join(os.getcwd(), filename)
        return cherrypy.lib.static.serve_file(path, "application/x-download", "attachment", os.path.basename(path))
download.exposed = True

当我对来自 /download 的响应使用 chrome 的检查工具时,我可以看到内容类型和处置标头已按预期设置,并且可以在响应部分中看到 zip 内容。但是,我只想下载文件。我曾经有过这个工作,但现在似乎无法让它再次运行。

HTTP/1.1 200 OK
Content-Type: application/x-download
Server: CherryPy/18.6.1
Date: Wed, 01 Jun 2022 20:14:59 GMT
Last-Modified: Wed, 01 Jun 2022 20:04:11 GMT
Content-Disposition: attachment; filename="benny.txt"
Accept-Ranges: bytes
Content-Length: 14

【问题讨论】:

  • 我正在做一些测试并将文件名设置为文本文件“benny.txt”,但结果相同。

标签: python cherrypy


【解决方案1】:

我有一个 CherryPy 应用程序,我在其中做类似的事情并且它可以工作。这是我的代码:

    def getzip(self, dirpath=None):
        zipfile = os.path.join(ziplink, 'hostmaps/%s' % dirpath)
        return static.serve_file(zipfile, 'application/x-download', 'attachment', os.path.basename(zipfile))

使用 jinja2 模板,我有一个从 HTML 下载 zip 的链接,如下所示:

<p><a href="getzip?dirpath={{ zipfile }}">Download zip archive</a></p>

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2016-02-09
    • 2014-12-01
    • 1970-01-01
    • 2012-08-18
    • 2010-12-08
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多