Cherrypy download serve_file



我正在尝试创建一个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

当我使用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

我有一个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>

希望这对你有帮助!

最新更新