2017-04-16 118 views
0

这可能是一个简单的问题,但我无法找到解决方案。 Django提供了很多关于上传文件的信息,但我该如何下载文件。用Django下载文件

我们假设我们在uploads/something.txt上有一个HTML按钮作为文件。我试过django.views.static.serve,但是这样做会在网页上打开一个文件。

我的问题很简单:我们网站的用户下载文件的最佳和最pythonic方式是什么?

回答

2
  • 您需要阅读该文件。
  • 使用HttpResponse和适当的内容类型。

下面是一些示例代码:

content = open("uploads/something.txt").read() 
return HttpResponse(content, content_type='text/plain') 

这应该成为一个文本文件。

但正如您所描述的那样,在某些浏览器上,它不会要求下载该文件,而是会将其显示在浏览器中。如果你想显示下载提示,使用此:

response = HttpResponse(open("uploads/something.txt", 'rb').read()) 
response['Content-Type'] = 'text/plain' 
response['Content-Disposition'] = 'attachment; filename=DownloadedText.txt' 
return response 

但是,请注意,这可能是一个更好的主意,通过nginx的或您所选择的反向代理提供静态内容或上传的文件。通过Django发送大文件可能不是最佳的方式。

+0

是的,这是绝对正确的。 –