0

我是python的新手。瓶子或其他框架或python中是否存在一些库,我可以通过它来处理文件下载,即我想开发代码,通过它我可以通过他需要指定我的密钥来授权人url 那么只有他可以下载文件,否则他无法下载该文件。

简单来说,我想调用一些在发出文件下载请求时调用的事件。在文件下载请求中,我需要在文件下载开始后执行一些功能。

4

1 回答 1

0

你的问题有点难以理解,但如果我正确理解你想要做什么,你最好的选择可能不是在你的 Python 框架中寻找这个功能。这样做的原因是大多数框架——至少我使用过的djangoflask作为其他服务器端功能。静态文件和媒体的交付通常最好由 Apache 等生产服务器完成gunicorn

这就是为什么,例如,在django 文档中,它特别说:

Django 本身不提供静态(媒体)文件,例如图像、样式表或视频。它将这项工作留给您选择的任何 Web 服务器。

这里的理由是标准的 Web 服务器,例如 Apache、lighttpd 和 Cherokee,在提供静态文件方面比 Web 应用程序框架更精细。

这种身份验证可能最好由您的服务器处理,无论是 Apache 还是其他东西。

使用框架保护下载文件的一种选择是将真实的文件 URL 隐藏在另一个需要身份验证的 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)

同样,我不一定推荐这样做,但这是使用框架执行此操作的一种选择。

更新: 阅读了新发布的评论后,我认为您最好的选择是由iMom0发布的,其中包含有关在 Django 中提供静态文件之前进行身份验证的链接。

于 2012-10-09T06:43:31.870 回答