ホームページ >バックエンド開発 >Python チュートリアル >Django で隠しパスを含むダウンロード可能なファイルを提供するにはどうすればよいですか?

Django で隠しパスを含むダウンロード可能なファイルを提供するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-28 11:19:12186ブラウズ

How to Serve Downloadable Files with Hidden Paths in Django?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。