Django による動的ファイルのダウンロード
Web アプリケーションでは、多くの場合、ユーザーにファイルのダウンロードを許可する必要があります。ただし、直接アクセスを防ぐために、ファイル パスを隠したい場合があります。 Django を使用すると、隠しパスを使用してダウンロード可能なファイルを提供できます。
質問:
ユーザーは http://example.com/download のような URL を作成したいと考えています。 /?f=somefile.txt にアクセスすると、/home/user/files/somefile.txt にあるファイルが表示されずに提供されます。
答え:
これを実現するには、HttpResponse クラスと xsendfile モジュールを組み合わせて使用します。 HttpResponse はファイルまたはファイル自体へのパスを生成し、xsendfile は実際のファイルの提供を処理します。
統合を示すサンプル コード スニペットは次のとおりです。
from django.utils.encoding import smart_str from django.http import HttpResponse 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 (Apache の場合) または X-Accel-Redirect (nginx の場合) が設定されていることを確認してくださいup.
Django 1.7 の更新:
コード内の mimetype 属性は content_type に置き換える必要があります。
以上がDjango で隠しパスを含むダウンロード可能なファイルを提供するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。