我是python的新手。我在瓶子或其他框架或python中存在一些库,我可以通过它处理文件下载,即我想开发代码,通过该代码我可以通过他需要指定的某些键来授权人员我键入url然后只能下载文件,否则他无法下载该文件。
简单地说我想调用一些在发出文件下载请求时调用的事件。文件下载请求我需要执行一些功能后文件下载开始。
答案 0 :(得分:0)
你的问题有点难以理解,但如果我理解你想做什么,最好的办法就是不要在你的Python框架中寻找这个功能。这样做的原因是大多数框架 - 至少django
和flask
,我已经使用过 - 不是为生产就绪服务器而构建的,主要用于服务动态网页模板和URL路由,以及其他服务器端功能。静态文件和媒体的传送通常最好由Apache,gunicorn
等生产服务器完成。
这就是为什么,例如,在django
docs中,它具体说:
Django本身不提供静态(媒体)文件,例如图像, 样式表或视频。它将该作业留给您的任何Web服务器 选择。
这里的原因是标准的Web服务器,例如Apache, lighttpd和Cherokee,在静态服务方面更加精细 文件而不是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 发布,link关于在Django中提供静态文件之前进行身份验证。