这资源上传这个页面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,有意者联系,呵呵