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方式下载文件。

转载于:https://www.cnblogs.com/tyler-bog/p/11001448.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值