Django でダウンロード可能なファイルを提供する
Web サイト上のユーザーは多くの場合、ファイルをダウンロードする機能を必要としますが、ファイルを保護し、直接ダウンロードを防止することは重要です。重要な。解決策の 1 つは、ユーザーが直接アクセスできないようにファイル パスを不明瞭にすることです。
これを実現するには、次のようなパラメータを含む URL を作成します。
http://example.com/download/?f=somefile.txt
ダウンロード可能なファイルがあるとします。 /home/user/files/ フォルダーにあります。 Django は、特定の URL やファイルを表示するための View を必要とせずに、ダウンロード用のファイルを提供するように構成できます。
X-Sendfile モジュールは、最適なソリューションを提供します。これにより、Django がファイルを見つけてヘッダーを指定できるようになりますが、実際のファイルの提供は Web サーバー (Apache、Lighttpd など) によって処理されます。 mod_xsendfile をインストールして構成した後、ビューと統合します。
from django.utils.encoding import smart_str response = HttpResponse(content_type='application/force-download') response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name) response['X-Sendfile'] = smart_str(path_to_file) return response
このアプローチには、サーバー制御または mod_xsendfile をサポートするホスティング会社が必要であることに注意してください。
追加考慮事項:
以上がDjango は X-Sendfile (または X-Accel-Redirect) を使用してダウンロード可能なファイルを安全に提供するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。