我有一个颜色列表,我希望向特定用户显示纹理,因此我需要加载特定用户拥有的颜色图像,颜色的信息包含在ObjecDTO中,其中一个属性是它的形象路径。我的问题是我应该如何将图像路径存储在数据库中,是否有任何特殊规则,例如,因为数据库和图像文件在同一台服务器上,我应该存储完整的文件URL,还是相对的URL,应该是什么字符我逃避等等,还是有比我更好的方法?
我在网上搜索过,但主要指的是在数据库中存储BLOB,我发现这是一种不好的做法。
非常感谢任何指导。
对待Tristian。
答案 0 :(得分:5)
创建一个名为image_path VARCHAR(255) NOT NULL
它将包含这样的数据:
~/images/image1.jpg
答案 1 :(得分:2)
我真的建议存储相对路径并将剩余的路径作为配置。这样,您可以更轻松地迁移。对于数据类型,我建议使用varchar(255)行,并确保代码中的限制。
如果是用户字段
,请不要忘记将其设置为UTF-8答案 2 :(得分:0)
答案 3 :(得分:0)
分享我对我们为应用程序选择的一种中间解决方案的想法。我将讨论这里讨论的一些建议的利弊,这些建议将有助于理解我的中间解决方案。
关于在数据库中保存特定域路径的想法
/user/{id}/avatar/img.png
)
优点:如果我们想将完整路径移动到新存储,并且我们有一个(或可数的)端点消耗我们的数据库,那么很容易,只需将具有相同结构的图像移动到新存储,并通知所有依赖的应用程序/API 将存储 url 更新为新的存储 url。
缺点:假设我们想要迁移到一个新的存储并且我们有多个 API 与我们的数据库交互,或者我们已经暴露给第三方并且他们在内部重新分发到其他 API。
如果你在保存相对路径的同时有这样的依赖关系,这并不容易。每当您更新存储时,您都必须与应用程序/第三方共享 blob 路径,以使他们能够呈现您的图像。它将为直接使用您的数据库的所有 API 创建严重的依赖关系。如果您的 API 是公开的,那么您必须支持和同步这两个存储,直到所有 API 都更新。
关于在数据库中保存完整路径的想法
www.example.com/user/{id}/avatar/img.png
)
中间解决方案:
今天,我与我的团队建立了联系,为一个拥有大约 1 TB 数据库并且严重依赖多个 API 和公共 API 的应用程序解决了这个问题。在观察了两种场景的优缺点后,我们想到了一个中间解决方案,如下所示: