django+python 实现下载文件

来源:互联网 发布:linux 开启端口监听 编辑:程序博客网 时间:2024/05/16 11:52

转自:出处1,出处2

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:

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

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

});


0 0
原创粉丝点击