2

从一个项目到为大量文件组织静态存储时遇到困难。对于图像,创建一个表 Image 并在其上计算存储路径的记录。像这样:

代码:

 $ image_id = 1665765;
 $ paddedId = str_pad ($ image_id, 20, '0 ', STR_PAD_LEFT);
 $ path = '/'. implode (DIRECTORY_SEPARATOR, str_split ($ paddedId, 2));

在输出:==> webroor.upload/00/00/00/00/00/00/01/66/57/65/1665765.jpg

$image_id 是需要图片的实体表中的一个字段($user->image_id)。这种方法允许在一个$image_id 的基础上指定图像的完整路径,而不必调用base。当我们清楚地知道文件的格式(在这种情况下,总是.jpg)时,它就可以工作。但有时用户需要下载不同格式的图像。而这种做法是不实用的,因为要制作精神,并用文件(Images)加入表格,通过id来文件并计算其扩展路径。由于表图像可能很大(甚至在单独的数据库中)会降低系统性能。请与我们分享您存储的食谱。也许有人知道如何做得更好。

对不起我的英语不好。

4

1 回答 1

1

有两种方法。

首先 - 您应该优化您的架构以存储数据库中所有文件的完整路径。但是对于已经存在的大量内容的项目来说,这并不容易。第二个 - 您已将所有上传的文件转换为一个特定的扩展名,例如 .jpg,您的所有麻烦都将消失。许多高负载社交网络使用此解决方案。

于 2012-10-25T10:11:02.267 回答