0

私はPythonに慣れていないものです。ボトルやその他のフレームワーク、またはPythonにファイルのダウンロードを処理できるライブラリがありますか。つまり、キーを指定してユーザーを承認できるコードを開発したいと考えています。 urlすると、彼だけがファイルをダウンロードできます。そうでない場合、彼はそのファイルをダウンロードできません。

簡単に言えば、ファイルのダウンロード要求が行われたときに呼び出されるイベントを呼び出したいと思います。ファイルのダウンロード要求では、いくつかの機能を実行する必要があります。その後、ファイルのダウンロードが開始されます。

4

1 に答える 1

0

あなたの質問を理解するのは少し難しいですが、私があなたがやりたいことを正しく理解しているなら、あなたの最善の策はおそらくあなたのPythonフレームワーク内でこの機能を探すことではありません。この理由は、ほとんどのフレームワーク(少なくともdjangoflask私が使用したもの)は、本番環境に対応したサーバーとして構築されておらず、主に動的なWebページテンプレートとURLルーティングを提供することを目的としているためです。他のサーバー側機能として。静的ファイルとメディアの配信は、通常、Apacheなどの実稼働サーバーで行うのが最適gunicornです。

そのため、たとえばdjango ドキュメントでは、具体的に次のように述べています。

Django自体は、画像、スタイルシート、ビデオなどの静的(メディア)ファイルを提供しません。その仕事は、選択したWebサーバーに任せます。

ここでの理由は、Apache、lighttpd、Cherokeeなどの標準のWebサーバーは、Webアプリケーションフレームワークよりも静的ファイルの提供においてはるかに微調整されているためです。

この認証は、Apacheであろうと他の何かであろうと、おそらくサーバーによってより適切に処理されます。

フレームワークを使用してファイルのダウンロードを保護するためのオプションの1つは、認証が必要な別のファイルの背後に実際のファイルURLを隠し、場合によってはファイルの実際のURLを変更することです。これは完全ではなく、ファイルを完全に保護することはできませんが、うまくいく可能性があります。例django

# urls.py
...
url('/my/file/url', my_file_download_function),
...

# views.py
from django.shortcuts import redirect

def my_file_download_function(request):
    if request.GET.get('apikey', None) == CORRECT_API_KEY:
        return redirect('/real/URL/to/file')
    else:
        return HttpResponse(status=401)

繰り返しますが、私は必ずしもこれをお勧めしませんが、これはフレームワークでそれを行うための1つのオプションです。

更新: 新しく投稿されたコメントを読んだ後、あなたの最善の策はiMom0によって投稿されたと思います。これには、Djangoで静的ファイルを提供する前の認証に関するリンクが含まれています。

于 2012-10-09T06:43:31.870 に答える