求用户上传产生无效文件的解决思路代码
在编写用户文件上传功能的时候,通常都是在form表单中设置一个隐藏的input控件,并使用iframe嵌套一个用于上传控制的文件,由用户输入本地文件,然后执行上传程序,完毕之后把文件的名称通过客户端脚本传递给父页面的隐藏input。在用户输入完其它信息后提交表单,系统就会把表单数据(包括input的值,即用户上传的文件名)一起写入到数据库中。但这种方式会带来一个问题:用户完成文件上传之后又没有提交表单,以至于上传的文件信息没有写入到数据库中,这样上传的文件就会变成废文件。另外,如果我们没有对用户在上传文件之后按回退键或者刷新页面等这些不正常的操作加以很好限制的话,那么废文件的生成就是不可避免的。
那么,如何才能比较好地解决这个问题呢?狂人参考了网上的一些资料,经过实践之后,总结了一条设计思路,仅供参考,也欢迎指正,以便改进。
其实思路很简单,主要是受到了中转站的启发。在用户执行文件上传操作的时候,事实上是执行了以下的步骤:
1、获取用户的Session.SessionID值或用户帐号,并以该值作为文件夹名,使用FSO对象新建一个临时性质的文件夹。
2、将用户文件上传至该文件夹中,并把文件名作为返回值赋予表单的隐藏input。如果用户在此期间执行了不正常的操作(如后退,刷新页面等),则所有的文件都将上传到该临时目录中,且返回给表单隐藏input的值只为最后一次上传的文件名。
3、用户在填写完表单的信息后提交,将信息写入数据库,并从隐藏input中获取文件名,使用FSO对象把该文件从临时文件夹复制(或移动)至目标文件夹,完成后将临时文件夹删除。
4、产生上传文件的列表,可以在线删除文件
问题点数:80、回复次数:5Top
1 楼andylon()回复于 2005-06-03 10:07:02 得分 0
没人顶啊Top
2 楼goodstuday(路漫漫)回复于 2005-06-03 10:11:45 得分 50
帮顶,看看有没有别的好方案
我也都是建立一个总的临时文件夹,把图片先传到这里,等其他的数据提交成功后再把图片转移到正式的文件夹,然后定时的清除临时文件夹。Top
3 楼dama2003(以后要开始加班了………………)回复于 2005-06-03 10:39:04 得分 0
弓虽Top
4 楼iuhxq(小灰)回复于 2005-06-03 10:50:41 得分 0
都是这个方法呀Top
5 楼zmgnwpu(大海)回复于 2005-06-03 11:02:22 得分 30
在同个页面上传,提交阿,这不是很好,为什么分页?Top




