存储在MySQL数据库中的路径类型是哪种?

5

当我使用PHP和MySQL来构建一个简单的网站时,存储文件和图片路径的最佳方法是什么?

  • 将路径作为系统路径(C:/----)插入到Mysql中
  • 将路径作为HTTP路径(http://----)插入到Mysql中

4
这完全取决于您需要使用数据的用途。这两种方法不能相互替换,就像比较苹果和橙子一样。 - Pekka
不是这些。而是从站点根目录开始的路径。或者尼古拉斯所说的。 - Your Common Sense
5个回答

5

始终将文件路径保存为相对于您的网站目录的路径。考虑您的网站地址是“foo.com”,您想将图像存储在“foo.com/images”中。最好不要使用“http”和“foo.com”来存储图像地址。

因此,只需保存文件名及其子文件夹(如果存在)即可。


如果你能生成地址,那就只保存带有头像的地址? - Mohammad Efazati

3
最好的方法是仅存储文件名,让您的应用程序确定文件的位置。你可以根据数据库表来相应地确定位置。比如说,假设我们有一个用户表,其中有一个头像字段。你可以只存储文件名(foo.jpg),然后在应用程序中确定路径(c:\xampp\htdocs\project1\img\users\foo.jpg)。或者更好的方法是,完全不存储关于图片的任何信息,然后通过用户的id(比如1.jpg,2.jpg等)检查图片是否存在。
但是,如果您真的想要存储绝对路径,请从项目文件夹开始存储。例如,假设您有 c:\xampp\htdocs\my_project\module1,则从/module1开始。
如果您需要存储外部URL,则可以保存整个链接http://www.foo.com/test

1

我建议您保存相对路径,而不是绝对路径。也就是说,如果您有以下结构:

c:/install_folder/
c:/install_folder/script.php
c:/install_folder/files/file.jpg

将 "file.jpg" 存储为 "files/file.jpg"。然后在应用程序的某个配置值中保存 "c:/install_folder/"。这样,您就可以轻松地移动应用程序并只需更新配置文件。


路径应该是绝对路径,严格的绝对路径。但是从站点根目录开始。 - Your Common Sense
Shrapnel上校,这也是我所说的。你有没有读过我的答案?它是相对于站点根目录的(不是绝对的,因为绝对意味着完整的系统路径或完整的URL)。 - Emil Vikström
不,你不理解这些术语。网站也有自己的绝对路径。/文件夹是网站的根目录,你可以使用它来构建任何绝对路径。 "绝对" 意味着“从任何地方调用时都能平等访问”。因此,通过从您的站点的任何文件夹中调用 /images/pic.jpg,您将获取此图像。因此,这是一个完全的绝对路径。 - Your Common Sense
我想我们的意思是一样的 :-) - Emil Vikström

1

只需保存图像名称,让您的应用程序处理目录构建。

包括路径,无论是绝对路径、虚拟路径还是Web地址,都会向图像字段列中的每个条目添加文件路径数据的开销。

如果您必须将此信息存储在数据库中,为什么不将其存储为指向路径表的外键呢?


0

这取决于你如何使用你的数据。当你想要编辑你的文件时,最好的解决方案是使用系统路径。而当你想要链接到另一个页面时,可以使用HTTP路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接