代码之家  ›  专栏  ›  技术社区  ›  MikeN

Django:密码保护照片url?

  •  3
  • MikeN  · 技术社区  · 14 年前

    从我的Django应用程序,我想提供安全的照片。这些照片不是供公众使用的,我只希望登录的用户有能力查看。我不想依赖模糊的文件id(给照片一个长数字的UUID),而指望它隐藏在我的媒体文件夹中。如何将照片安全地存储在数据库中的磁盘上,并且只将其流式输出到经过身份验证的会话?

    3 回复  |  直到 14 年前
        1
  •  6
  •   Community Jaime Torres    7 年前

    使用X-Sendfile头告诉前端服务器要实际服务器的文件。

    @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

    最后,nginx和lighttpd使用X-Accel-Redirect和X-lighttpd-send-file而不是X-Sendfile。

        2
  •  2
  •   Debilski    14 年前

    您可以通过创建 HttpResponse 使用图像的mime类型,然后将图像文件写入/复制到其中。

    from django.http import HttpResponse
    
    @your_favourite_permission_decorator
    def image(request):
        response = HttpResponse(mimetype='image/png')
    
        with open("image.png") as img:
            response.write(img.read())
        return response
    

    还有,看这个 example for PDF files PIL .

        3
  •  0
  •   Damian    13 年前

    如果是带有mod_python的Apache服务器,这可能是一篇关于 Apache using Django's authentication system