Php 如何在服务器';s文件系统
我在数据库中有很多记录,每个记录都有一个图像,我很困惑如何存储图像 我希望访问路径类似于Php 如何在服务器';s文件系统,php,filesystems,Php,Filesystems,我在数据库中有很多记录,每个记录都有一个图像,我很困惑如何存储图像 我希望访问路径类似于/img/record-id.jpg(即/img/15178.jpg) 好的,将所有图像存储在/img/中不是一件好事,因为会有很多 在中,建议反转图像的名称,因此上面的示例将存储在/img/78/51/15178.jpg下。这个建议不会提供更多关于其他场景的信息(对我来说也不明显)。如果id是一个很低的数字,如5、15、128、1517,会发生什么情况(在最后的评论中询问答案) 撇开这一点不谈,让我们记住我
/img/record-id.jpg
(即/img/15178.jpg
)
好的,将所有图像存储在/img/中不是一件好事,因为会有很多 在中,建议反转图像的名称,因此上面的示例将存储在
/img/78/51/15178.jpg
下。这个建议不会提供更多关于其他场景的信息(对我来说也不明显)。如果id是一个很低的数字,如5、15、128、1517,会发生什么情况(在最后的评论中询问答案)
撇开这一点不谈,让我们记住我希望路径是/img/15178.jpg
。我会使用Apache重定向请求,但为此,我必须为不同的id号键入至少3条或更多规则:
/img/$1$2^/img/(\d)(\.jpg)$
/img/$1/$2^/img/(\d\d)(\.jpg)$
/img/$1/$2/$3^/img/(\d\d)(\d\d)(\.jpg)$
- 等等
我真的不知道在这里该怎么办。介意给我一些建议吗?你已经写出了完美的答案!专业人士使用它的方式与您(或链接问题中的人)所说的完全一样:构建适合您需要的深层目录结构。我已经用1600万张图片完成了这项工作,而且效果非常好 我是这样做的: /第一个字符/第二个字符/ 具有短名称的文件(如5.jpg)将位于/5/5.jpg中
编辑:为了保持最佳性能,我完全反对任何进一步的php操作,如salt、md5等。保持简单明了。“好的,将所有图像存储在/img/中不是一件好事,因为会有很多。”-您预计会有多少?你为什么认为这是个问题?+1对于帕维尔
将请求重定向到PHP脚本,让它处理输出
我认为这是个坏主意。让您的web服务器直接为图像服务,它将为您处理很多事情,比如资源缓存。关于MD5,您可以将图像存储在/some/path/img/123456789.jpg中,并直接链接到此图像(123456789将是MD5字符串)。此外,您还可以将这两种技术结合起来:generate和md5,确保其长度始终相同,将其拆分为n个部分,并使用您提供的技术(/img/78/51/15178.jpg)@Pavel我希望是数千,5000+。我不喜欢在一个目录中有1000多个文件的想法。或者这不是问题?@pomeh是的,但问题是,图像的名称是它所属记录的id,因此它将从1变为5000+。@renocor,那么,问题出在哪里?您可以始终将5.jpg图像放在/images/5/目录中。您可以进一步解释该方法,或者共享一个解释该方法的链接吗?我还是不明白,你如何通过htaccess重定向请求?1458.jpg将位于/1/4/5/1458.jpg?@renocor;)确切地这里没有重定向!简单地在文件名的每个字符之间加一个/。