django 打开一个 zip 文件供用户下载

django open a zip file for user to download

Django 1.7,Python3.4,windowsapache 2.4.12 + wsgi

在我的程序中,我生成了一些 csv 文件并将它们放在一个 zip 文件中。我想让用户下载 zip 文件,强制下载(文件生成并呈现响应后)或单击按钮(显示结果后,用户必须单击按钮才能下载。)

目前我强制他们在服务器上生成 zip 文件后下载。

我参考了以下链接并在下面提出了我的代码。但它总是给我这个错误“'charmap' codec can't decode byte 0x8d in position 80: character maps to “我试着用utf-8和ascii设置它,也会给出类似的错误。

引用链接:

有人知道我为什么会收到此错误以及如何让它工作吗?

非常感谢!

zip_filename = time.strftime("%Y%m%d") + ".zip"
with zipfile.ZipFile(zip_filename, mode='a', compression=zipfile.ZIP_DEFLATED) as zf:
    for s in sql_request:
        // generate csv files
        zf.write(csv_file)

// close zf

zip_file = open(zip_filename, 'r')
response = HttpResponse(zip_file, content_type='application/force-download')
response['Content-Disposition'] = 'attachment; filename="%s"' % 'foo.zip'
return response

如果您使用 Windows,您可能需要更改 open 行以包含 b flag.

zip_file = open(zip_filename, 'rb')