创建私有图像文件夹?(Creating a private image folder?)

2019-10-16 21:18发布

我有一个不断增长的网站,4种尺寸30K左右的图像共12万。 我目前的解决方案是将它们存储在一个数据库,并从我堆栈阅读oveflow这似乎是一个非常糟糕的主意。

我开始明白为什么。 我注意到在性能急剧下降。 认为显而易见的解决方案是将这些图像移动到文件夹的设置,我想使用的用户ID为目录名,然后有一个公共的和私人的子目录。

该结构是这样的:

/54869
    /public
        /size_1/img1.jpg
        /size_2/img1.jpg
        /size_3/img1.jpg
        /size_4/img1.jpg
    /private
        /size_1/img2.jpg
        /size_2/img2.jpg
        /size_3/img2.jpg
        /size_4/img2.jpg

什么是确保这个私人文件夹,并只提供其他用户访问该文件的所有者已授予权限的最好方法?

我也想以防止用户只需查看任何文件夹的内容,但我想我可以执行检查客户端来解决这个问题。

任何想法或建议?

Answer 1:

你可以把该文件夹而不能从网络访问(如放置文件夹以外htdocs或添加的.htaccess规则)。

创建一个PHP脚本处理私人图像的所有请求。 这个脚本必须做到以下几点:

  • 检查用户是否通过认证
  • 检查用户是否被授权查看所请求的图像
  • 打开图像并将其打印到浏览器(您需要设置正确的HTTP头,以确保内容被视为图片)

然后,在你的HTML,简单地指向/secret_image.php?id=3也许你想使用的图片的路径/secret_image.php?p=/54869/public/size_1/img1.jpg



Answer 2:

你可以试试这个

imageViewer.php?imgID=XXX;     where XXX=hashFunction(salt.imgName)

而不要在imageViewer.php所有的处理一样,如果用户拥有权限或不!



文章来源: Creating a private image folder?