ICANN认证国际域名顶级注册机构
网站建设,域名注册,空间租用,软件销售,广告设计 域名注册,空间租用, 网站建设,东莞网页设计,域名注册,网站推广,网站开发,网页设计 网站推广,,百度推广,新浪推广,雅虎推广,网易推广 标志设计,画册设计,包装设计,VI策划,企业形象顾问 连邦软件加盟店,提供销遥行,管家婆,速达,用友ERP,诺顿等软件报价及销售 建站必读 腾达网络,上网帮助中心, 腾达为东莞等地,提供网站建设,网站推广,广告设计,软件销售等优质服务!
建站必读


 
 
当前位置:首页 -> 建站必读 -> ASP技术
文件上传之后
大家经常会利用上传组件上传文件吗?你的空间是否足够大,以至于可以不考虑冗余文件的处理?这里所说的冗余文件,是指用户修改信息或误操作后,不再与信息关联的文件,久而久之,这些文件会占用相当大的空间。

以下情况可能产生冗余文件:

1.用户修改了原信息。

用户可能在修改信息的同时更换了上传文件,而被更换的文件留在了服务器上;

2.用户在发布信息过程中操作失误,系统提示错误,用户返回后,上传了与原文件不同的文件,原文件留在了服务器上;

3.删除信息时未将与其关联的上传文件同时删除。

为了在以上几种情况出现时,都将冗余文件处理掉,我采取了一些可能有些繁琐的办法,但是为了可怜的空间,繁琐就繁琐点吧。以下办法仅限于利用文件上传组件的操作,如果是将文件存在库里,希望也能有所参考。



先从上传说起

上传文件可能采取两种方式:

1.信息入库与文件上传同时操作;

2.先让用户上传文件,然后信息入库;

我以前采用过第一种方法,后来再做此类功能的时候放弃了。它虽然可以将上传文件的相关信息,如文件个数,文件名等与信息同时写入库中,但是缺点也很明显,比如处理中出错的可能性大大增加;允许用户上传多个文件时需加入多个<input type=file>循环处理,一处有错,全部重来;如果用户对不同文件的显示位置有要求,处理较困难等等。

采用第二种办法,可以对每次上传单独控制,但是需要把上传的信息如[upload=***]******.***[/upload]用javascript写回<textarea>,显示的时候用UBB处理。我对js的可靠性不放心,但是鱼与熊掌不可兼得,舍鱼而取熊掌也。

这里插一下对文件上传个数的控制,有些同学把上传个数写入库表,或用session,我感觉都不够灵活,比如用户修改时,如何使上传文件个数相应变化呢?得费些功夫。我的办法是判断<textarea>中[upload]...[/upload]的个数,用户如想修改,从<textarea>删去欲修改的[upload]...[/upload],可再上传直至允许的个数。

上传时,文件名一般用上传时间加随机数替换,这样做有两个目的,一是保证文件不重名,二是避免文件名中的非法字符造成上传的文件无法正确显示。

但是我把每一篇“文章”中上传的文件,放在单独的一个文件夹中,文件夹的名字也用时间加随机数生成,这样做是为了删除文件时便于操作----只要删掉一个文件夹就OK了,试想从相对较少的文件夹找到要删掉的文件夹,与从一大堆文件中找到要删除的文件相比,还是要省些功夫的。



下面针对可能产生冗余文件的操作,介绍我的做法:

1.删除文件时。

上面说过了,只要删掉与信息关联的文件夹就可以了。

但是这个文件夹要写到库表中的,我是这样做的:在信息发布的表单中设一个<input type=hidden name=filepath>,当上传第一个文件时,生成文件夹名,[upload]写回<textarea>的同时,文件夹名写回filepath,每次上传前判断这个控件中是否有值,如有,就不再生成文件夹名了。这样修改信息时,也可以保证文件上传到原来的文件夹。

2.修改信息时。

在用户修改信息时,前面说过,只要删掉<textarea>中的[upload],就可上传其它文件,但是原先上传的(也就是用户删掉的[upload]所标识的)那个文件留在了服务器上。这时候,我遍历filepath下的所有文件(这也是建文件夹的目的之一),判断每个文件是否在<textarea>中,如果不在,将其删除。简单的办法是直接查找<textarea>的字串中是否包含从文件夹中取得的文件名,如果嫌不保险,也可以利用正则表达式,取得<textarea>中[upload][/upload]中间的文件名,与文件夹中物理存在的文件名比较。

3.信息发布时。

用户在发布信息时,可能预览后对上传的文件不满意,返回去修改,这时候的操作跟上面一样,也就是说,在发布时也要比对filepath中的文件名与<textarea>中的文件名。这样当然会影响发布的速度,为了节省空间,只好以时间换空间了。

还有一种情况:用户上传了文件后,没有来得及发布,关掉了浏览器,转到了其它页面,或是出现其它意外,这时候会造成站点空间中存在一个与任何信息不关联的文件夹。为了处理这种情况,我加了一个表,在生成文件夹名的同时,将其存入这个表,信息发布的同时,再把它从表中删去。这样,那些“孤立”的文件夹就会留在新加的这个表中,管理员可以每隔一段时间将表中的文件夹删除,清理一下这些“孤立”的文件夹。



采用以上办法,只需要在表中记录下文件夹名,而不用另外记录上传的文件名(文件名存在于信息正文中)。

当然,还存在其它的情况,比如在修改时,用户上传了新文件,然后关闭了浏览器,这时候在上传文件夹中会出现冗余文件。但是我以上的处理,已经使出现冗余文件的可能性大大减小了,如果您觉得有必要,可以进行更细致,同时也是更繁琐的处理:)
 
 
本站关键词:
|东坑镇 企石镇 石排镇|茶山镇 莞城 东城|万江 南城|东莞网络服务|东莞软件开发|东莞软件设计|东莞主页设计|东莞公司主页|东莞建站套餐|东莞建站服务|东莞商标设计|东莞商标注册||东坑镇 企石镇 石排镇|茶山镇 莞城 东城|万江 南城|东莞网络服务|东莞软件开发|东莞软件设计|东莞主页设计|东莞公司主页|东莞建站套餐|东莞建站服务|东莞商标设计|东莞商标注册||东坑镇 企石镇 石排镇|茶山镇 莞城 东城|万江 南城|东莞网络服务|东莞软件开发|东莞软件设计|东莞主页设计|东莞公司主页|东莞建站套餐|东莞建站服务|东莞商标设计|东莞商标注册||东坑镇 企石镇 石排镇|茶山镇 莞城 东城|万江 南城|东莞网络服务|东莞软件开发|东莞软件设计|东莞主页设计|东莞公司主页|东莞建站套餐|东莞建站服务|东莞商标设计|东莞商标注册||东坑镇 企石镇 石排镇|茶山镇 莞城 东城|万江 南城|东莞网络服务|东莞软件开发|东莞软件设计|东莞主页设计|东莞公司主页|东莞建站套餐|东莞建站服务|东莞商标设计|东莞商标注册||东坑镇 企石镇 石排镇|茶山镇 莞城 东城|万江 南城|东莞网络服务|东莞软件开发|东莞软件设计|东莞主页设计|东莞公司主页|东莞建站套餐|东莞建站服务|东莞商标设计|东莞商标注册||东坑镇 企石镇 石排镇|茶山镇 莞城 东城|万江 南城|东莞网络服务|东莞软件开发|东莞软件设计|东莞主页设计|东莞公司主页|东莞建站套餐|东莞建站服务|东莞商标设计|东莞商标注册||东坑镇 企石镇 石排镇|茶山镇 莞城 东城|万江 南城|东莞网络服务|东莞软件开发|东莞软件设计|东莞主页设计|东莞公司主页|东莞建站套餐|东莞建站服务|东莞商标设计|东莞商标注册||东坑镇 企石镇 石排镇|茶山镇 莞城 东城|万江 南城|东莞网络服务|东莞软件开发|东莞软件设计|东莞主页设计|东莞公司主页|东莞建站套餐|东莞建站服务|东莞商标设计|东莞商标注册||东坑镇 企石镇 石排镇|茶山镇 莞城 东城|万江 南城|东莞网络服务|东莞软件开发|东莞软件设计|东莞主页设计|东莞公司主页|东莞建站套餐|东莞建站服务|东莞商标设计|东莞商标注册||东坑镇 企石镇 石排镇|茶山镇 莞城 东城|万江 南城|东莞网络服务|东莞软件开发|东莞软件设计|东莞主页设计|东莞公司主页|东莞建站套餐|东莞建站服务|东莞商标设计|东莞商标注册||东坑镇 企石镇 石排镇|茶山镇 莞城 东城|万江 南城|东莞网络服务|东莞软件开发|东莞软件设计|东莞主页设计|东莞公司主页|东莞建站套餐|东莞建站服务|东莞商标设计|东莞商标注册||东坑镇 企石镇 石排镇|茶山镇 莞城 东城|万江 南城|东莞网络服务|东莞软件开发|东莞软件设计|东莞主页设计|东莞公司主页|东莞建站套餐|东莞建站服务|东莞商标设计|东莞商标注册||东坑镇 企石镇 石排镇|茶山镇 莞城 东城|万江 南城|东莞网络服务|东莞软件开发|东莞软件设计|东莞主页设计|东莞公司主页|东莞建站套餐|东莞建站服务|东莞商标设计|东莞商标注册|
域名注册 | 虚拟主机 | 网站建设 | 网站推广 | 广告设计 | 帮助中心 | 软件中心 | 关于腾达
东莞市腾达信息工程有限公司      本站网络实名: 东莞网站建设
地址:东莞市新城市中心区第一国际B座610   邮编:523007
电话:0769-22026071 22026072 传真:0769-22026076 24小时服务热线:13712032014
© 2002~2005 腾达网络   版权所有