|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于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>中的文件名。如许固然会影响宣布的速度,为了节俭空间,只好以工夫换空间了。
还有一种情形:用户上传了文件后,没有来得及宣布,关失落了阅读器,转到了其它页面,或是呈现其它不测,这时候候会形成站点空间中存在一个与任何信息不联系关系的文件夹。为了处置这类情形,我加了一个表,在生成文件夹名的同时,将其存入这个表,信息宣布的同时,再把它从表中删去。如许,那些“孤立”的文件夹就会留在新加的这个表中,办理员可以每隔一段工夫将表中的文件夹删除,清算一下这些“孤立”的文件夹。
采取以上举措,只需求在表中纪录下文件夹名,而不必别的纪录上传的文件名(文件名存在于信息注释中)。
固然,还存在其它的情形,好比在修正时,用户上传了新文件,然后封闭了阅读器,这时候候在上传文件夹中会呈现冗余文件。然而我以上的处置,已使呈现冗余文件的能够性大大减小了,假如您感觉有需要,可以停止更仔细,同时也是更繁琐的处置:)</p> asp可以轻松地实现对页面内容的动态控制,根据不同的浏览者,显示不同的页面内容。而浏览者一点觉察不出来,就像为他专门制作的页面一样。使用各种各样的组件,asp可以完成无比强大的功能。 |
|