我一直在使用一种提供下载服务的方法,但由于它不安全,我决定改变它。 (方法是链接到存储中的原始文件,但风险是每个知道链接的人都可以下载文件!)所以我现在通过我的视图提供文件,这样只有获得许可的用户才能下载文件,但我注意到服务器负载很高,同时有许多文件同时下载请求。这是我处理用户下载的部分代码(考虑文件是图像)
image = Image.open ("the path to file")
response = HttpResponse(mimetype = 'image/png' )
response['Content-Disposition'] = 'attachment: filename=%s.png' % filename
image.save(response , "png")
return response
在保持安全性和降低服务器端负载的同时提供文件服务有没有更好的方法?提前致谢 :)
原文由 user633784 发布,翻译遵循 CC BY-SA 4.0 许可协议
您打开图像会将其加载到内存中,这就是导致大量使用时负载增加的原因。正如 Martin 所发布的那样,真正的解决方案是直接提供文件。
这是另一种方法,它将以块的形式流式传输文件而不将其加载到内存中。