如何在python中根据文件下载请求调用一些函数



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

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

你的问题有点难以理解,但如果我正确理解你想做什么,你最好的选择可能不是在Python框架中寻找这个功能。原因是大多数框架——至少是我使用过的djangoflask——并不是为生产准备的服务器而构建的,它们主要用于提供动态网页模板和URL路由,以及其他服务器端功能。静态文件和媒体的交付通常最好由Apache、gunicorn或其他生产服务器来完成。

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

Django本身不提供静态(媒体)文件,样式表或视频。它将该作业留给您的任何Web服务器选择

这里的理由是标准的Web服务器,lighttpd和切诺基,在发球静态方面调整得更为精细文件而不是Web应用程序框架。

这部分身份验证可能最好由您的服务器来处理,无论是Apache还是其他什么。

使用框架保护下载文件的一种选择是将真实的文件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中提供静态文件之前进行身份验证的链接。

相关内容

最新更新