Django中实现文件下载功能

来源:互联网 发布:链轮设计参数计算软件 编辑:程序博客网 时间:2024/06/06 03:35

在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


本文参考了上述文章中的方法,讲述了在Django中文件下载功能的具体实现步骤:

1. 新建一个文件下载的模板(本文是基于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>

2. 编写相应的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 responsedef readFile(filename,chunk_size=512):    with open(filename,'rb') as f:        while True:            c=f.read(chunk_size)            if c:                yield c            else:                break


3. 配置相应的页面访问url:


    经过上述3步后,就可以实现文件下载功能了。









0 0
原创粉丝点击