簡體   English   中英

從django中查看返回zip以供下載

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM