Django實現流下載

需要手動引入fileDownload.js 下載地址可前往 https://www.zhijinyu.com

1. 定義一個下載函數

    def download_excel(filename, chunk_size=512):
        with open(filename, 'rb') as f:
            while True:
                c = f.read(chunk_size)
                if c:
                    yield c
                else:
                    break

2. 導入django的包 views.py

from django.http import StreamingHttpResponse
from django.utils.http import urlquote

def  test(request):
    
    # filename = " "    打開的文件路徑
    response = StreamingHttpResponse(download_excel(filename=desktop_path + '\\用戶角色數據統計表.xlsx'))
    response['Content-Type'] = 'application/vnd.ms-excel'  # 注意格式
    #django自帶一個urlquote函數用于url編碼,解決不支持中文編碼問題
    response['Content-Disposition'] = 'attachment;filename=' + urlquote("用戶角色數據統計表.xls") #注意filename 這個是下載后的名字
# 設置cookie讓前端指定文件下載完成
    response.set_cookie('fileDownload', True, 1)
    return response

js

 $('#down-recruit').click(function () {
            var layer_index = '';
            var url = '{% url "tool:test" %}';
         $.fileDownload(url,{
            httpMethod: 'GET',
            prepareCallback:function(url){
                 layer_index = layer.load(3, {
                  shade: [0.01] //0.1透明度的白色背景
                });
            },
            successCallback:function(url){
                console.log('下載完成');
               layer.close(layer_index)
            },
            failCallback: function (html, url) {
               console.log('文件下載失敗, 數據異常');
               layer.close(layer_index)
            }
         });
        })
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容