这是在数据库中保存图像名称或完整URL的最佳做法



哪种方法在数据库中存储图像名称更好?我有两个选择,第一个是只存储图像名称,例如apple.png和第二选择是存储完整的图像URL,例如abc.com/src/apple.png.

任何帮助将不胜感激。谢谢。

最佳做法不是像 abc.com/src/apple.png 那样将完整路径保存到映像,而是将特定域路径保存到映像。前任:

  • 用户图片 :/user/{id}/avatar/img.png

  • 产品图片:/产品/{id}/1.png

在这种情况下,您可以避免将图像粘贴到定义的服务器,服务器路径,URL等。例如,您将决定将所有图像移动到另一台服务器,在这种情况下,您无需更改数据库中的所有记录。

这两个答案已经很好地涵盖了它。保存目录路径而不是保存整个 URL 路径确实是最佳做法。已经涵盖了一些原因,例如可以轻松地将文件夹移动到另一台服务器,而无需对文件逻辑进行任何更改。

您可以做的是将所有内容都放在一个目录中,引用该目录,然后保存映像名称。但是,我不建议这样做。另一种结构只是使导航和浏览更容易。良好的文件结构是你以后会感谢自己的,以防你由于某种原因不得不手动完成事情。

话虽如此,我想将这个技巧添加到组合中:

$_SERVER['DOCUMENT_ROOT'].这总是使您从根目录开始,而不必做繁琐的事情,例如../../等。看起来一团糟。

因此,最后作为图像路径,您将得到如下内容:

<img src="<?php echo $_SERVER['DOCUMENT_ROOT'].'/'.$row['filePath']; ?>" >

$row['filePath']是数据库中存储的文件路径。

根据文件路径的保存方式,您可能会丢失图像源链接中的/

首先你需要上传项目公共文件夹中的所有图像,所以不需要保存domain name

如果您将所有图像存储在一个目录中,那么在数据库中仅存储图像名称没有问题

您可以轻松访问<img src="/foldername/imagename.jpg" />等图像

但是,如果您的项目中有多个目录,例如

  1. 个人资料:保存用户头像图片,
  2. 背景
  3. :保存背景图像,

那么最好将带有路径的图像保存在数据库中,例如"/profile/avatar.jpg"

因此,您可以像<img src="imagepathhere" />一样访问图像

另一种常见的方法是使用 cols 创建图像

  • 编号
  • 类型(枚举或整数(
  • 名称(文件名( 在应用中定义类型(在模型中更好(,例如

USER_AVATAR = 1; PRODUCT_IMG = 2;

为每个图像类型定义路径映射,例如:

$paths = [ USER_AVATAR => '/var/www/project/web/images/users', ... ];

并在另一个表中使用此图像表中的 ID。它被称为多态性关联。这是存储图像的最灵活方式。

相关内容

  • 没有找到相关文章

最新更新