我的网络应用程序允许用户搜索目录中的文件,并返回指向与特定时间范围匹配的文件的链接。
用户可以点击任何链接并通过某个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
答案 0 :(得分:4)
您几乎就在那里,但您需要设置Content-disposition
标头值,如下所示:
response['Content-Disposition'] = "attachment; filename='fname.ext'"
答案 1 :(得分:0)
首先根据“路径”打开文件:
with open(path, 'rb') as a:
response = HttpResponse(a.read())