我正在建立一个网站,正在查看数百万张照片上传很容易(每张图片上传3张缩略图),我需要找到存储所有这些图像的最佳方法。
我搜索并找到了存储为哈希的图像示例......例如......
如果我上传,coolparty.jpg,我的脚本会将其转换为Md5哈希导致..
dcehwd8y4fcf42wduasdha.jpg
并存储在 /dc/eh/wd/dcehwd8y4fcf42wduasdha.jpg
但对于3个缩略图,我不知道如何存储它们
质询..
这是存储这些图像的正确方法吗?
我如何存储缩略图?
在PHP中,使用上述方法存储这些图像的示例代码是什么?
您使用这样的方法的原因只是减少每个目录(inode)的文件总数。
使用您描述的方法(3级深度),您每个目录甚至不可能达到数百个图像,因为您将拥有近17MM的最大目录数。 16 ** 6。
至于你的问题。
- 是的,这是存储它们的好方法。
我会这样做的方式
/aa/bb/cc/aabbccdddddddddddddd_thumb.jpg
/aa/bb/cc/aabbccdddddddddddddd_large.jpg
/aa/bb/cc/aabbccdddddddddddddd_full.jpg
或类似的
- 就如何实际存储图像而言,网上有很多例子。你有更具体的问题吗?
如果您正在谈论数百万张照片,我建议您将这些照片发送给第三方,例如Amazon Web Services,更具体地说是针对此Amazon S3。文件数量没有限制,假设您不需要实际列出文件,则根本不需要将它们分成目录(如果您确实需要列出,则可以使用不同的分隔符和前缀 - http://docs.amazonwebservices.com/AmazonS3/latest/dev/ListingKeysHierarchy.html)。而你的托管/重建成本可能会低于自己 - 并且他们会得到备份。
更具体地回答,是的,按子目录拆分;使用您的结构,您可以删除文件名的前5个字符,因为您已经在目录名称中使用了它。
和aquinas建议的拇指一样,只是在文件名中添加了_thumb1等。或者存储在单独的文件夹中。
1)这是你能回答的问题。通常,我更喜欢将图像存储在数据库中,因此您可以拥有一个一致的备份,但是YMMV。
2)怎么样? /dc/eh/wd/dcehwd8y4fcf42wduasdha_thumb1.jpg,/dc/eh/wd/dcehwd8y4fcf42wduasdha_thumb2.jpg和/dc/eh/wd/dcehwd8y4fcf42wduasdha_thumb3.jpg怎么样
3)???您是否在询问如何将文件写入文件系统或...?
改善答案。
对于数百万的图像,同样如此,使用数据库将减慢该过程是正确的
最好的选择是使用“服务器文件系统”来存储图像,并使用.htaccess来增加安全性。
或者你可以使用网络服务。很多服务器都提供Images Api来上传,显示。
你也可以选择这个选项。例如亚马逊