您的位置:首页 > 其它

第一次上传资源,喷血离场

2009-05-29 00:20 549 查看
这资源上传这个页面http://u.download.csdn.net/upfile是谁做的啊,我的神啊,我今晚上得传快要疯了



我的上传限制是25M,我想上传一个30多M的资源,把它压缩成两个压缩包

我第一个压缩文件上传上去了,http://download.csdn.net/source/1360970

但是第二个我上传了9次,一次也没成功,我快喷血了

每次都是等到上传进度条到100%时才提示“此文件您已经上传过!”

我猜想这个页面的上传控件是这样写的:

if(UpdateFileSuccess())

{

}

else

{

}

bool UpdateFileSuccess()

{

UpdateFileToTempFile();

if(!ExistInUpdateFile(TempFile))

{

MoveTempFileToUpdateFile();

UpdateRecordToDatabase();

return True;



}

else

{

DeleteTempFile();

Response.Write("<script>windows.alert('此文件您已经上传过!');</script>");

return False;

}

}

当然这只是本人个人的观点,具体还是要看代码才能分析出问题的逻辑错误

本人认为正常逻辑应该是这样的:

if(!ExistUpdateFile())

{

if(UpdateFile())UpdateRecordToDatabase();

}

else

{

Response.Write("<script>windows.alert('此文件您已经上传过!');</script>");

}

由于我第一次上传if(!ExistInUpdateFile(TempFile)){},因而执行了{}

的内容,但是MoveTempFileToUpdateFile();执行成功之后

UpdateRecordToDatabase();由于某种原因没有执行成功,导致我一直想要上传第一次没有记录到数据库的文件时,发现文件已经存在,而记录虽没有,但是已存在的文件是不允许再上传的!

这就导致了我碰到了这种情况的发生!

这个程序的健壮性不好,如果真的是不可避免地存在UpdateRecordToDatabase();有一定的几率会失效的话,那么本人建议用户上传的文件不判断是否存在就直接覆盖,或者可以提示用户是否覆盖已存在的文件,或者不判断是否存在就直接不覆盖

当然看具体情况,要用什么方法了,好了累了,先睡觉了,呵呵

本人qq648952046,有意者联系,呵呵
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: