django+python 实现文件下载

在Django中实现文件下载功能的方法有很多,我们可以根据项目的具体情况来选择适合自己应用场景的方法。

实现方法可以参考以下的几篇文章中的方法:

  1. Django实现文件下载的几种方法: http://blog.csdn.net/martin_liang/article/details/43286539

  2. Django大文件的下载:http://www.tuicool.com/articles/bUnMfu

  3. Django实现下载文件功能:http://www.jianshu.com/p/2ce715671340

新建一个文件下载的模板(本文是基于bootstrap的模板):

<div class="row">
      <div class="col-md-8 col-md-offset-2">
          <br>
          <P>第一种方法,直接把链接地址指向要下载的静态文件,在页面中点击该链接,可以直接打开该文件,在链接上点击右键,选择“另存为”可以保存该文件到本地硬盘。
             此方法只能实现静态文件的下载,不能实现动态文件的下载。</P>
          <a href="{% url 'media' 'uploads/11.png' %}">11.png</a>
          <br>
          <br>
          <p>第二种方法,将链接指向相应的view函数,在view函数中实现下载功能,可以实现静态和动态文件的下载。</p>
          <a href="{% url 'course:download_file' %}">11.png</a>
          <br>
          <br>
          <br>
          <p>第三种方法,与第二种方法类似,利用按钮的响应函数实现文件下载功能。</p>
          <label> 11.png</label><button onclick="window.location.href='{% url 'course:download_file' %}'">Download</button>
      </div>
  </div>

编写相应的view函数:

def download_file(request):
    # do something

    the_file_name='11.png'             #显示在弹出对话框中的默认的下载文件名    
    filename='media/uploads/11.png'    #要下载的文件路径
    response=StreamingHttpResponse(readFile(filename))
    response['Content-Type']='application/octet-stream'
    response['Content-Disposition']='attachment;filename="{0}"'.format(the_file_name)
    return response

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

配置相应的页面访问url即可。

前台使用函数方法

①、a标签调用函数传入路径

②、button标签调用jq方法调用后台函数

<input type='button' class='download'>

$("body").on("click",".download",function(){  location.href="/downloadFile/?url="+路径;

});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值