我是初级/中级PHP MySQL开发人员。
计划使用 Yii 或 Codeigniter 创建一个多用户 Web 应用程序,用户拥有自己的私人和公共区域。他们将能够上传照片和/或文件,以便通过网络(文档等)访问。
我有点担心文件的最佳存储方式。这些多站点/用户网站(wordpress,blogger,facebook)是如何做到的?
我想过以下选项,但我不知道行业是否这样做:
基本上,我们会为任何用户上传的文件使用 3 个名称(原始名称和 2 个新名称)
-
用户上传文件(图像、文档等),我们重命名文件并将其存储在文件夹中,并将原始名称与其他文件属性一起保存在数据库中
-
为了显示文件,我们将使用第三个新名称
这样,只有所有者知道原始名称,没有人知道物理文件名。
- 这是完成的方法还是有更简单的方法?
- 是否可以在不重命名文件或重新创建任何图像且不增加处理时间的情况下显示具有"虚拟"名称/路径的文件? 或者 PHP 有一种原生方式可以"不显示"实际的文件名给浏览器?
- 用户如何在不处理真实文件名的情况下使用 Web 地址共享文件?
- 即使没有人知道文件的物理名称,有人可以通过网络"搜索"或定位文件吗?,比如谷歌或任何其他精明感兴趣的用户?
谢谢
您可以简单地使用 .htaccess 重写图像路径的 URL,或者对文件夹和文件名进行哈希处理。
存储取决于您将要处理的文件量。像Facebook等大公司从数百台(或更多!)服务器工作,并且拥有相当专业的存储方法等。
对于常规 Web 应用程序,简单的文件或数据库存储可能就足够了。