在CMS上存储和传送文件的最佳方式

时间:2010-06-06 13:35:53

标签: php content-management-system file-upload

首先,这不是关于在DB与文件系统上存储图像的另一个问题。我已经将图像存储在文件系统上了。我只是在努力寻找一种更好的方式向所有用户展示它们。

我目前正在使用这个系统。我使用md5(uniqueid())生成一个随机文件名,我面临的问题是,图像会显示如下链接:

<img src="/_Media/0027a0af636c57b75472b224d432c09c.jpg" />

正如您所看到的,这不是显示图像(或文件)的最佳方式,并且该名称没有说明该图像。

我一直在使用CMS系统,它将所有上传的文件存储在一个表上,以访问它使用的图像:

<img src="../getattachment/94173104-e03c-499b-b41c-b25ae05a8ee1/Menu-1/Escritorios.aspx?width=175&height=175" />

正如你可以看到图像的路径,现在具有与另一个相比的意义,问题是这在数据库中造成了很大的压力,例如,在我制作的最后一个网站中,我有一个区域有大约60个图像,为了显示60个图像,我必须至少对数据库进行60个单独的查询,除了查询页面上的各种内容之外的其他查询。

我认为你理解我的困境,有没有人通过这个问题,这可以给我一些关于如何解决这个问题的指示?

谢谢..

1 个答案:

答案 0 :(得分:0)

您可以随时使用.htaccess重写网址并删除友好名称。举个例子,您可以将图像源显示为:

/Media/0027a0af636c57b75472b224d432c09c/MyPictures/Venice.jpg

您可以使用htaccess实际请求:

/Media/0027a0af636c57b75472b224d432c09c.jpg

另一种选择是拥有一个完全友好的名字:

/Media/MyPictures/Venice.jpg

并将其重定向到一个PHP文件,该文件检查url并生成哈希值,以便它知道服务器上的实际图像文件名。然后php脚本应设置内容类型,读取图像并输出。这种方法的主要缺点是,当两个图像可能具有相同的哈希值时,您可能会遇到冲突。鉴于您当前的方法也可能发生同样的事情,我认为这不是问题。