ホームページ > バックエンド開発 > Python チュートリアル > 標準の URL とビューを使用せずに Django でダウンロード可能なファイルを提供するにはどうすればよいですか?

標準の URL とビューを使用せずに Django でダウンロード可能なファイルを提供するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-28 17:02:10
オリジナル
822 人が閲覧しました

How to Serve Downloadable Files in Django Without Using Standard URLs and Views?

Django でダウンロード可能なファイルを提供する: 包括的なアプローチ

ダウンロード可能なファイルを安全に提供することは、Web 開発における一般的な要件です。 Python の人気のある Web フレームワークである Django は、このタスクを容易にするいくつかのメソッドを提供します。そのような方法の 1 つは、直接ダウンロードを防ぐためにファイル パスを隠すことです。

このシナリオでは、必要な URL 形式は http://example.com/download/?f=somefile.txt であり、somefile.txt は次の場所にあります。サーバー上の home/user/files/ フォルダー。疑問が生じます: Django は、標準の URL と View を使用せずにダウンロード用のファイルをどのように配信できるでしょうか?

X-Sendfile ソリューション

1 つの効果的なソリューションは、 X-Sendfile モジュール。このモジュールは、Apache または Lighttpd サーバーを利用してファイルの提供を処理します。 Django はファイルのパスまたはファイル自体を生成し、サーバーは実際のファイル配信を管理します。

X-Sendfile による実装

X-Sendfile を Django と統合するには、次の手順に従ってください:

  1. サポートするようにサーバーを構成しますX-Sendfile.
  2. Django ビューで、次のコードを使用してファイルを提供します。
from django.utils.encoding import smart_str
from django.http import HttpResponse

response = HttpResponse(mimetype='application/force-download') # mimetype is replaced by content_type for django 1.7
response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name)
response['X-Sendfile'] = smart_str(path_to_file)
# Set 'Content-Length' header if necessary
return response
ログイン後にコピー

このコードは、X-Sendfile を利用してファイルのサーバーへの提供を委任します。許可されたユーザーがファイルをダウンロードできるようにしながら、ファイル パスが隠蔽されたままであることを保証します。

以上が標準の URL とビューを使用せずに Django でダウンロード可能なファイルを提供するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート