任何想法如何上传网站保存那里的图片?

时间:2010-12-02 12:34:25

标签: php image architecture upload directory

更多的是与架构相关的问题,对不起,如果我在错误的堆栈中提问。

他们把它们放在一个文件夹中吗? 像

  

$ uid。$ md5(随机)。$ name保存在一个   夹

folder/5231.124wdadace123214.arandomname.jpg
folder/42.15125dawdaowdaw232.arandom2name.png
folder/etc

  

$ UID / $ MD5(随机的)。$名称

5231(uid)/12421adwawda2321.arandomname.jpg
42/15125awdawdwadwa232.arandom2name.png
etc/2323awdwadwadaw.logo.png

我在想什么是第二个更好? 因为在Windows我在一个文件夹中有很多照片
是的,打开它需要时间。

你知道他们如何保存文件吗?

5 个答案:

答案 0 :(得分:1)

这主要取决于文件系统。对于像NTFS或ext3这样的现代文件系统,将大量文件保存在同一目录中不是问题,但是一些较旧的文件系统无法处理它。

但是,根据某种方案将文件分区为子目录可能仍然是一个好主意,只是为了使它们可以通过各种工具(可能有各自的大量目录问题)进行管理,例如备份。顺便说一句,在Windows资源管理器中打开一个目录就算是这样了。

答案 1 :(得分:1)

我为我的网站编写了一个函数,它将用户ID转换为两级子目录层次结构,将每个级别的子目录限制为1000.

function get_image_dir($gid) {
    $d = str_split(str_pad($gid, 6, "0", STR_PAD_LEFT), 3);
    $wdir = "/images/members/" . $d[0] . "/" . $d[1] . "/" . $gid;
    return $wdir;
}

(实际上,我使用原始用户ID添加第三级来处理以1,000,000为单位的翻转。

/images/members/000/001/1
/images/members/000/002/2
...
/images/members/999/999/999999
/images/members/000/000/1000000
/images/members/000/001/1000001

在这些子目录中,我进一步基于

进行隔离
  1. 专辑(由成员组织)
  2. 各种调整(针对不同的 网站上的地方
  3. 最终结构看起来像

    /images/members/000/001/1/album1/original
    /images/members/000/001/1/album1/50x50
    /images/members/000/001/1/album1/75x75
    /images/members/000/001/1/album1/400x300
    

    函数中的str_split(str_pad())可能不是最佳的,但现在它可以正常工作。

答案 2 :(得分:0)

如果我们谈论的是将图片保存在不同文件夹中的数千个,这取决于您期望有多少图像,这使得计算机更容易扫描目录中的文件

答案 3 :(得分:0)

我这样做的方法是使用包含id号的文件夹

/img/0-100/1
/img/101-200/102

这将为您提供查找图像的简便方法,文件夹将保持很小。 并且没有扩展名,因为我将其保存在数据库中。

答案 4 :(得分:0)

是的,一个文件夹中的大量文件可能会减慢对该文件夹中文件的搜索速度。至少在主要操作系统中。从理论上讲,它不一定是这样。

其他网站也使用日期。不只是用户ID或图像ID。另一种做同样事情的方法。