2017-04-16 26 views
0

これはおそらく簡単な質問かもしれませんが、私はどうにかして解決策を見つけることができません。 Djangoはファイルのアップロードについて多くのことを提供していますが、ファイルをダウンロードするにはどうすればいいですか?Djangoでファイルをダウンロード

のは、我々はファイルとしてuploads/something.txtにHTMLのボタンを持っていると仮定しましょう。

しかし私は、これが何をしたか、それはWebページ上のファイルを開くだろう、django.views.static.serveてみました。

私の質問は簡単です:私たちのウェブサイトのユーザーがファイルをダウンロードするにはどのような方法が最適ですか?あなたがそのファイルを読む必要が

答えて

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

はい、絶対に正しいです。 –

関連する問題