我在数据库中有很多记录,每条记录都会有一个图像,我对如何存储图像感到很困惑。
我希望访问路线类似于/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/(\d)(\.jpg)$
/img/$1$2^/img/(\d\d)(\.jpg)$
/img/$1/$1$2^/img/(\d\d)(\d\d)(\.jpg)$
/img/$1/$2/$3- 等等?
这似乎不是一个好的解决方案,尽管它可以正常工作。
我可以想到其他选项:获取图像的 MD5,将其存储在相应的记录中,将请求重定向到 PHP 脚本并让它处理输出。
该脚本将在 MD5 中查找数据库中的 id,从散列中构建实际路由并输出图像。这个方案比较简洁,但是输出图片需要用到数据库和PHP,听起来有点过头了。
我真的不知道在这里做什么。介意给我一些建议吗?