ASP教程之文件上传以后
由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。上传 人人常常会使用上传组件上传文件吗?你的空间是不是足够大,以致于可以不思索冗余文件的处置?这里所说的冗余文件,是指用户修正信息或误操作后,不再与信息联系关系的文件,一朝一夕,这些文件会占用相当大的空间。以下情形能够发生冗余文件:
1.用户修正了原信息。
用户能够在修正信息的同时改换了上传文件,而被改换的文件留在了办事器上;
2.用户在宣布信息过程当中操作掉误,体系提醒毛病,用户前往后,上传了与原文件分歧的文件,原文件留在了办事器上;
3.删除信息时未将与其联系关系的上传文件同时删除。
为了在以上几种情形呈现时,都将冗余文件处置失落,我接纳了一些能够有些繁琐的举措,然而为了不幸的空间,繁琐就繁琐点吧。以下举措仅限于使用文件上传组件的操作,假如是将文件存在库里,但愿也能有所参考。
先从上传说起
上传文件能够接纳两种体例:
1.信息入库与文件上传同时操作;
2.先让用户上传文件,然后信息入库;
我之前采取过第一种办法,后来再做此类功效的时分保持了。它固然可以将上传文件的相干信息,如文件个数,文件名等与信息同时写入库中,然而弱点也很分明,好比处置中失足的能够性大大增添;答应用户上传多个文件时需到场多个<input type=file>轮回处置,一处有错,全体重来;假如用户对分歧文件的显示地位有请求,处置较坚苦等等。
采取第二种举措,可以对每次上传独自掌握,然而需求把上传的信息如******.***用javascript写回<textarea>,显示的时分用UBB处置。我对js的牢靠性不宁神,然而鱼与熊掌不成兼得,舍鱼而取熊掌也。
这里插一下对文件上传个数的掌握,有些同窗把上传个数写入库表,或用session,我感到都不敷天真,好比用户修正时,若何使上传文件个数响应变更呢?得费些工夫。我的举措是判别<textarea>中...的个数,用户如想修正,从<textarea>删去欲修正的...,可再上传直至答应的个数。
上传时,文件名普通用上传工夫加随机数交换,如许做有两个目标,一是包管文件不重名,二是防止文件名中的不法字符形成上传的文件没法准确显示。
然而我把每篇“文章”中上传的文件,放在独自的一个文件夹中,文件夹的名字也用工夫加随机数生成,如许做是为了删除文件时便于操作----只需删失落一个文件夹就OK了,试想从绝对较少的文件夹找到要删失落的文件夹,与从一大堆文件中找到要删除的文件比拟,仍是要省些工夫的。
上面针对能够发生冗余文件的操作,引见我的做法:
1.删除文件时。
下面说过了,只需删失落与信息联系关系的文件夹就能够了。
然而这个文件夹要写到库表中的,我是如许做的:在信息宣布的表单中设一个<input type=hidden name=filepath>,当上传第一个文件时,生成文件夹名,写回<textarea>的同时,文件夹名写回filepath,每次上传前判别这个控件中是不是有值,若有,就不再生成文件夹名了。如许修正信息时,也能够包管文件上传到本来的文件夹。
2.修正信息时。
在用户修正信息时,后面说过,只需删失落<textarea>中的,便可上传其它文件,然而本来上传的(也就是用户删失落的所标识的)谁人文件留在了办事器上。这时候候,我遍历filepath下的一切文件(这也是建文件夹的目标之一),判别每一个文件是不是在<textarea>中,假如不在,将其删除。复杂的举措是直接查找<textarea>的字串中是不是包括从文件夹中获得的文件名,假如嫌不保险,也能够使用正则表达式,获得<textarea>中两头的文件名,与文件夹中物理存在的文件名对照。
3.信息宣布时。
用户在宣布信息时,能够预览后对上传的文件不写意,前往去修正,这时候候的操作跟下面一样,也就是说,在宣布时也要比对filepath中的文件名与<textarea>中的文件名。如许固然会影响宣布的速度,为了节俭空间,只好以工夫换空间了。
还有一种情形:用户上传了文件后,没有来得及宣布,关失落了阅读器,转到了其它页面,或是呈现其它不测,这时候候会形成站点空间中存在一个与任何信息不联系关系的文件夹。为了处置这类情形,我加了一个表,在生成文件夹名的同时,将其存入这个表,信息宣布的同时,再把它从表中删去。如许,那些“孤立”的文件夹就会留在新加的这个表中,办理员可以每隔一段工夫将表中的文件夹删除,清算一下这些“孤立”的文件夹。
采取以上举措,只需求在表中纪录下文件夹名,而不必别的纪录上传的文件名(文件名存在于信息注释中)。
固然,还存在其它的情形,好比在修正时,用户上传了新文件,然后封闭了阅读器,这时候候在上传文件夹中会呈现冗余文件。然而我以上的处置,已使呈现冗余文件的能够性大大减小了,假如您感觉有需要,可以停止更仔细,同时也是更繁琐的处置:)</p>asp可以轻松地实现对页面内容的动态控制,根据不同的浏览者,显示不同的页面内容。而浏览者一点觉察不出来,就像为他专门制作的页面一样。使用各种各样的组件,asp可以完成无比强大的功能。 Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名") Session:这个存储跟客户端会话过程的数据,默认20分钟失效 不能只是将它停留在纸上谈兵的程度上。 ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。 因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。 ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。 因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。 虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。 ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。 如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助: 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的? 我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。 最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。 ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。 跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组 Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名") 运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。 我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。 我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。 Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
页:
[1]
2