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

时间:2015-03-06 16:43:19

标签: python django download zip

Django 1.7,Python 3.4,windows apache 2.4.12 + wsgi

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

目前,一旦在服务器上生成zip文件,我就强迫他们下载。

我引用了以下链接,并在下面提供了我的代码。但总是给我这个错误"' charmap'编解码器不能解码位置80中的字节0x8d:字符映射到"我尝试用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

1 个答案:

答案 0 :(得分:1)

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

zip_file = open(zip_filename, 'rb')