[解決済み】Djangoにダウンロード可能なファイルを提供させる
2022-04-04 08:43:54
質問
サイト内のユーザーが、直接ダウンロードできないようにパスが隠されたファイルをダウンロードできるようにしたい。
例えば、次のようなURLにしてほしいのです。
http://example.com/download/?f=somefile.txt
また、サーバー上では、ダウンロード可能なファイルはすべて、フォルダー
/home/user/files/
.
Django が、URL や View を見つけて表示しようとするのとは対照的に、そのファイルをダウンロードするために提供させる方法はありますか?
解決方法は?
S.Lottの解決策と、この解決策を組み合わせることができます。 xsendfileモジュール : django はファイルへのパス (またはファイルそのもの) を生成しますが、実際のファイル提供は Apache/Lighttpd によって処理されます。一旦 mod_xsendfile をセットアップすれば、ビューとの統合は数行のコードで済みます。
from django.utils.encoding import smart_str
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)
# It's usually a good idea to set the 'Content-Length' header too.
# You can also set any other required headers: Cache-Control, etc.
return response
もちろん、これはあなたがサーバをコントロールできる場合か、ホスティング会社が mod_xsendfile をすでにセットアップしている場合にのみ機能します。
EDITです。
mimetype は django 1.7 では content_type に置き換えられています。
response = HttpResponse(content_type='application/force-download')
EDITです。
について
nginx
チェック
これ
を使用しています。
X-Accel-Redirect
の代わりに
apache
X-Sendfileヘッダ。
関連
-
PicgoのイメージベッドツールをPythonで実装する
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Flaskで静的ファイルを提供する方法
-
[解決済み] Djangoのバージョンを確認する方法
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み】DjangoのImageFieldにプログラム的に画像を保存する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonコンテナのための組み込み汎用関数操作
-
Pythonによるjieba分割ライブラリ
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】ValueError: xとyは同じサイズでなければならない
-
[解決済み] HTTPのContent-Dispositionヘッダーのファイル名パラメータをエンコードする方法は?