HTML文件链接 - 始终强制下载

时间:2017-10-03 12:53:49

标签: html django browser download server

我有一个呈现上传文件列表的Django视图,用户可以点击它们开始下载。

项目部署完成后,我们发现浏览器打开了一个文件,而不是下载它。它似乎与.dxf扩展名有关。

这是链接的创建方式:

<a href="{{ MEDIA_URL }}{{ file.url }}" target="blank">...</a>

结果:

http://localhost:8003/media/folder/whatever.dxf

那么,为什么同一个浏览器的行为有所不同?如果我在localhost上运行它,那么它会下载该文件。但访问真实的服务器,它打开它。我可以阻止服务器在浏览器中打开它们吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试添加将处理下载的新Django视图。

<强> urls.py

from django.conf.urls import url
import views

urlpatterns = [
    url(r'^download/$', views.DownloadView.as_view(), name='download')
]

<强> views.py

import urllib
from django.http import HttpResponse
from django.views.generic.base import View


class DownloadView(View):
    def get(self, request):
        location = request.GET.get('location')
        file = urllib.urlretrieve(location)
        contents = open(file[0], 'r')
        content_type = '%s' % file[1].type
        response = HttpResponse(contents, content_type=content_type)
        response['Content-Disposition'] = 'attachment; filename="%s"' % location.split('/')[-1]
        return response

<强> template.html

<a href="/download/?location={{ MEDIA_URL }}{{ file.url }}">...</a>