我会说将所有图像存储在图像文件夹中,然后将图像的路径存储在数据库中,例如,如果我们正在发布帖子并且每个帖子都有一个图像,我们可以将图像上传到/webroot/images/
并将路径保存/webroot/images/someimage.jpg
在数据库中.
如果网站有很多图片,最好做进一步的组织,在一个文件夹中有数千个文件是不好的,特别是如果你要尝试用 ftp 连接,你可以再添加一个带有帖子 ID 的文件夹(在我提到的示例中),因此它将成为/webroot/images/[id]/image1.jpg
例如。
如果前缀始终相同/webroot/images
,您可以在数据库中忽略它以节省一些磁盘空间,前提是应用程序知道图像文件夹的位置,您也可以忽略id
第二个示例中的,视图代码将是这样的
<img src='<?= IMAGES_FOLDER."/".$post->getId()."/".$post->getImageName() ?>' />
getImage()
当然,在帖子中添加一个功能会很好,请查看示例:
public function getImage()
{
return IMAGES_FOLDER."/".$this->getId()."/".$this->getImageName();
}
标签现在img
会更干净
<img src='<?= $post->getImage() ?>' />
PS:在数据库中存储图像效率非常低,因为数据库通常是应用程序的瓶颈,将图像存储在数据库中会增加数据库大小,并且在访问网站上的任何图像时都会造成更多的点击,更不用说为了打开您需要运行 php(或您使用的任何语言)脚本来提供该图像的任何图像,这将增加服务器上的 RAM 使用率。
另外,既然您提到用户将要上传图片,请尽量避免存储与他们上传的名称相同的图片,这会让事情看起来很傻,尤其是长名称和使用空格和其他东西的名称,我通常通过md5
对图像名称,或生成随机字符串以及md5
它,保持字符串长度不变并且看起来更干净,不要忘记仔细检查图像的存在以避免覆盖它。
当然,我建议的所有名称都只是示例,您可以随意使用适合您应用的名称。