需要手動引入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)
}
});
})