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设置它,也会给出类似的错误。
引用链接:
- django download file from server to user's machine,or read online
- how to serve downloadable zip file in django
- https://djangosnippets.org/snippets/365/
- Generating file to download with Django
有人知道我为什么会收到此错误以及如何让它工作吗?
非常感谢!
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')
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设置它,也会给出类似的错误。
引用链接:
- django download file from server to user's machine,or read online
- how to serve downloadable zip file in django
- https://djangosnippets.org/snippets/365/
- Generating file to download with Django
有人知道我为什么会收到此错误以及如何让它工作吗?
非常感谢!
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')