[英]returning zip for download from view in django
我嘗試在我的Django應用程序中下載一個zip文件。
我應該如何從視圖中返回它?
我嘗試了下面的代碼,但是我在瀏覽器中得到了一些警報,其中包含我的zip文件內容。
我究竟做錯了什么?
def download_logs(request):
date = datetime.datetime.now().__str__().replace(" ", "_").split(".")[0]
os.system("df -h . > /tmp/disk_space")
response = HttpResponse(mimetype='application/zip')
response['Content-Disposition'] = 'filename=logs_%s.zip' % date
files = []
files.append("/tmp/disk_space")
buffer = StringIO()
zip = zipfile.ZipFile(buffer, "w", zipfile.ZIP_DEFLATED)
for name in files:
file = open(name, "r")
zip.writestr(name, file.read())
file.close()
zip.close()
buffer.flush()
ret_zip = buffer.getvalue()
buffer.close()
response.write(ret_zip)
return response
您應該告訴瀏覽器將響應視為文件附件。
從文檔中 ,您應該執行以下操作:
>> response = HttpResponse(my_data, mimetype='application/vnd.ms-excel')
>>> response['Content-Disposition'] = 'attachment; filename=foo.xls'
這是一個實際工作代碼的鏈接,用於在內存中構建ZipFile並將其作為要下載的文件返回給用戶: django-rosetta的view.py
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.