我想从我的 Django 应用程序中提供安全照片。这些照片不供公众使用,我只希望登录用户能够查看它们。我不想依赖混淆的文件ID(给照片一个长数字的UUID)并指望它隐藏在我的媒体文件夹中。如何将照片安全地存储在数据库中的磁盘上,并且仅将其流式传输到经过身份验证的 session ?
最佳答案
使用 X-Sendfile header 告诉您的前端服务器实际服务器是什么文件。
@check_permissions
def image(request):
response = HttpResponse(mimetype='image/png')
response['X-Sendfile'] = "/real/path/to/image.png"
return response
这里是 related question .您还可以看到 real world implementation通过查看 Satchmo 如何为 DownloadableProduct 对象提供服务。
最后一点,nginx 和 lighttpd 使用 X-Accel-Redirect 和 X-LIGHTTPD-send-file 而不是 X-Sendfile。
关于Django:密码保护照片网址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2747053/