您当前的位置:首页 >> 网站建设
RSS

谈谈内容管理系统中用户上传文件的垃圾防范

作者: Insun Lee 来源: 2009-08-10

在一般情况下,每个系统通常都有用户上传附件功能,但是由于种种原因用户经常会把一些没用的附件留在系统上久而久之在系统中就产生了很多垃圾文件,以下您将看到防范垃圾文件产生的一些方法。

一、用户上传的文件变成垃圾文件的情况如下:
1、文件上传后由于断电或其他原因导致退出,上传的文件并未插入系统;
2、在编写一篇文章的时候插错了一张图片或者文件,跟换新的文件而旧文件并未删除;
3、其他;

二、垃圾文件主动处理模式

在这个模式下,系统将主动清除“无用”的文件,用户处于被动状态,在设定的规则下,一些文件将被判定为无用文件而删除。目前我们自己的系统中对垃圾附件的解决办法如下:

(一)、对每个用户建立一个附件文件夹,建立的路径可以根据系统用户的数量采用不同的方法,比如:
1、如果系统中用户的数量很多,那么可以采用“年/月/日/用户名”的方式来建立文件夹以防止单文件夹下用户数量过多导致读取缓慢;
2、如果用户的数量不多,那么只要在附件的目录下建立一个temp目录然后根据用户名再建立文件夹,如“/site_root/upload/temp/username”。

(二)、所有用户上传的文件全部先放至临时目录下;

(三)、当用户发布文章的时候吧临时文件移动到正规目录下;

(四)、用户退出或者登陆的时候清空附件临时文件夹。

至此所有的步骤完成了。通常来说,我们会对每个上传的系统做数据库记录,要注意移动或者清空文件临时目录的时候需要同时修改数据库。

这里顺便谈下文章中在编辑器插入图片。在文章中如果允许用户插入图片,那么我们通常需要对图片上传的目录、文件名、上传的用户、上传时间等做记录。然而当用户新添加文章的时候文章是没有ID的,因此我们没办法在附件表中记录文章的ID,这可能导致删除文章的时候图片还留在系统中。在通常情况下,当一篇文章删除了,那么与之相关的图片是不是没用呢?如果是,那么是不是要产生垃圾文件?因此,当用户在文章中插入图片的时候,我们需要给他一个临时的hash,文章发布后把相应的附件的Hash更新为对应的文章ID。

在上面临时附件处理办法中,用户插入的任何附件是可以不给Hash,因为在移动文件的时候我们就会去更新数据库相应的记录。

三、垃圾文件的被动处理模式

目前百度、sina、163等网站的blog系统的处理办法都采用这种模式。在这种模式下,用户对文件的管理拥有主动权,是否为垃圾文件需要看客户,如果客户觉得有用他们留着,如果没用他们自己删除了。在这种模式下,用户在文章中插入图片都是都是首先被上传到相册,然后才从相册中去读取。

四、优劣点

以上两种办法各有千秋,如果你希望人性化点,建议采用被动处理模式,如果你的空间有限,我们建议采用主动处理模式

本文首发于一族网络,您可以引用至其他网站,但是需要留下本文链接。

联系E族

关闭
  • 即时信息
  • 详细信息

发送