Django文件下載(通過反向解析)


Django文件下載(通過反向解析)

首先配一個路由

url(r'^download/(.*)', views.download,name='download_file'),

在HTML中添加需要下載的文件標簽

<a href="{% url 'download_file'  file_name  %}">下載文件</a>  <!--file_name為要下載的文件名-->

在視圖層

# 文件下載
def download(request,data): # 通過反向解析獲取data文件名
		file_path = os.path.join(os.getcwd(), data) # 拼接文件在服務端的真實路徑
    # 下載文件(固定格式)
    ext = os.path.basename(file_path).split('.')[-1].lower()
    # 不讓客戶下載的文件路徑
    if ext not in ['py', 'db', 'sqlite3']:
        response = FileResponse(open(file_path, 'rb'))
        response['content_type'] = "application/octet-stream"
        response['Content-Disposition'] = 'attachment; filename=' + 'dow_name' # 下載的文件名
        return response  # 返回文件流
    else:
        raise Http404

總結:

下載文件中遇到的問題:剛開始准備使用post方式請求,post方式有兩種,form表單和ajax方式,使用form表單會在每次下載完后刷新頁面,不可選取,使用ajax方式,最后發現,ajax不能下載文件流,所以只能選用get方式下載文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM