IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]ADODB.Stream 错误 \'800a0bbc\' 写入文件失败

    testcs_dn发表于 2015-10-28 14:23:06
    love 0

    最近在调试一个过去的项目,asp写的一个无组上传类,以前都测试通过的,本次发布却提示:

    ADODB.Stream 错误 '800a0bbc' 
    
    写入文件失败。 
    
    /UpLoadClass_Dreacom_v3/UpLoadClass.asp,行 703 
    发生此错误的系统是:Windows Server 2008 R2

    有的还可能提示:ADODB.Stream 错误 30004

    开始以为是权限的问题,于是设置文件夹的权限,甚至给了Everyone完全控制的权限,结果还是不行;

    相关错误代码行:

    stream.SaveToFile fileName, 2
    输出文件路径:

    response.write "<br />fileName=" & fileName

    指定的保存目录:

    folderPath=C:\inetpub\wwwroot\UpLoadClass_Dreacom_v3\Demo1\UpLoadFile

    临时文件保存位置:
    fileName=C:\inetpub\wwwroot\UpLoadClass_Dreacom_v3\Demo1\UpLoadFile\2015\10\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())得到的数据格式是:2015-10-28,中间的分隔符是减号,而在Windows Server 2008 R2得到的格式是2015/10/28,在执行Server.MapPath时,就把它当成目录来处理了,由于对应的目录不存在,所以导致了这个问题。

    找到原因,解决方法就自然明了了,把日期中的“/”也替换掉就可以了。





沪ICP备19023445号-2号
友情链接