2017-04-16 80 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

是的,這是絕對正確的。 –