最近在调试一个过去的项目,asp写的一个无组上传类,以前都测试通过的,本次发布却提示: ADODB.Stream 错误 '800a0bbc'
写入文件失败。
/oa/UpLoadClass.asp,行 703 发生此错误的系统是:Windows Server 2008 R2
开始以为是权限的问题,于是设置文件夹的权限,甚至给了Everyone完全控制的权限,结果还是不行;
相关错误代码行: stream.SaveToFile fileName, 2 输出文件路径:
response.write "fileName=" & fileName 指定的保存目录:
folderPath=C:\inetpub\wwwroot\oa\UpLoadFile 临时文件保存位置: fileName=C:\inetpub\wwwroot\oa\UpLoadFile\2019\1\2851107108ad_0.tmp 通过路径可以发现,多了几层目录,这是什么呢?
这涉及到下面的函数: Public Function GetNewUploadID() dim dtstr dtstr = Replace(cstr(Date()), "-", "") & CStr(CLng(timer()*1000)) GetNewUploadID = dtstr & GetRandomCode(20 - Len(dtstr)) End Function 通常我们cstr(Date())得到的数据格式是:2019-1-28,中间的分隔符是减号,而在Windows Server 2008 R2得到的格式是2019/1/28,在执行Server.MapPath时,就把它当成目录来处理了,由于对应的目录不存在,所以导致了这个问题。 找到原因,解决方法就自然明了了,把日期中的“/”也替换掉就可以了。