哪种更好的方法将图像名称存储在数据库中?我有两个选择,第一个是仅存储图像名称,例如apple.png
,第二种选择是存储完整的图像网址,例如abc.com/src/apple.png
。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
最佳做法不是保存完整的图像路径,如abc.com/src/apple.png,而是保存图像的特定域路径。例如:
用户图片:/user/{id}/avatar/img.png
产品图片:/product/{id}/1.png
在这种情况下,您避免将图像粘贴到已定义的服务器,服务器路径,URL等。例如,您将决定将所有图像移动到另一台服务器,在这种情况下,您无需更改数据库中的所有记录。
答案 1 :(得分:1)
这两个答案已经很好地涵盖了它。实际上,最好的方法是保存目录路径,而不是保存整个URL路径。已经说明了一些原因,例如可以轻松地将文件夹移动到另一台服务器,而不必在文件逻辑中进行任何更改。
您可以做的是,将所有内容都放在一个目录中,对其进行引用,然后仅保存图像名称。但是,我会 不 推荐。其他结构只是使其更容易浏览和浏览。好的文件结构是您以后要感谢自己的东西,以防万一由于某种原因而不得不手动进行操作。
话虽如此,我想将此技巧添加到组合中:
$_SERVER['DOCUMENT_ROOT']
。这总是使您从根目录开始,而不必进行诸如../../
等繁琐的工作。它看起来像一团糟。
最后,作为图像路径,您将拥有类似的东西:
<img src="<?php echo $_SERVER['DOCUMENT_ROOT'].'/'.$row['filePath']; ?>" >
$row['filePath']
是您从数据库存储的文件路径。
根据文件路径的保存方式,图像源链接中的/
可能会丢失。
答案 2 :(得分:0)
首先,您需要将所有图像上传到项目的公用文件夹中,因此无需保存{
"issuerPaid": [
{
"_id": "5b86b18afa04445392ff6542",
"voucher_id": "5b7cfa381496bea7d6c5bea4",
"voucher_paid_by": "loser",
"challenge_loser": [
{
"last_name": "Gmail",
"first_name": "Vishwas"
}
],
"voucher": [
{
"_id": "5b7cfa381496bea7d6c5bea4",
"voucher_name": "Walora"
}
]
}
]
}
如果将所有图像存储在一个目录中,那么仅将图像名称存储在数据库中就没有问题
您可以轻松访问domain name
之类的图像
但是如果您的项目中有多个目录,例如
然后最好将带路径的图像保存在<img src="/foldername/imagename.jpg" />
因此您可以访问"/profile/avatar.jpg"
之类的图片
答案 3 :(得分:0)
另一种常见的方法是使用cols创建 image 表
USER_AVATAR = 1;
PRODUCT_IMG = 2;
为每种图像类型定义路径图:
$paths = [
USER_AVATAR => '/var/www/project/web/images/users',
...
];
并在另一个表中使用此 image 表中的ID。它称为多态关联。这是最灵活的图像存储方式。