让用户下载文件+ django

时间:2015-09-21 20:39:22

标签: django file downloading

我的网络应用程序允许用户搜索目录中的文件,并返回指向与特定时间范围匹配的文件的链接。

用户可以点击任何链接并通过某个URL查看文件内容。

我宁愿用户能够点击链接并将文件下载到他们的系统,而不是在单独的页面上显示文件内容。

这是我到目前为止所拥有的......

download.html

<ul>
{% for file in match %}
    <a href =/media/{{ file }}>{{ file }}</a>
    <br></br>
{% endfor %}
</ul> 

我们从这个视图中查看文件......

def xsendfile(request, path):  
    response = HttpResponse()
    response['Content-Type']=''
    response['X-Sendfile']= smart_str(os.path.join(settings.MEDIA_ROOT, path))
    return response

使用此网址..

url(r'^media\/(?P<path>.*)$', views.xsendfile),

我不确定如何解决这个或哪条路走下去

非常感谢任何指导! :)

这是我的代码更改:

def xsendfile(request, path):  
    response = HttpResponse()
    response['Content-Type']=''
    response['Content-Disposition'] = "attachment; filename="+path
    response['X-Sendfile']= smart_str(os.path.join(settings.MEDIA_ROOT, path))
    return response

2 个答案:

答案 0 :(得分:4)

您几乎就在那里,但您需要设置Content-disposition标头值,如下所示:

response['Content-Disposition'] = "attachment; filename='fname.ext'"

答案 1 :(得分:0)

首先根据“路径”打开文件:

with open(path, 'rb') as a: response = HttpResponse(a.read())