ADoDB.stream 错误‘800a0bbc’写入文件失败

ER_JIN_ZHI 2011-04-22 09:39:22
小弟用的 ASP 文件编码是 UTF-8
用FSO好像乱码,在网上找来 这个对象用来生成网站首页,整个流程没啥文件,测试也好
只是有时候提示
ADoDB.stream 错误‘800a0bbc’写入文件失败
并不是每次都这样,是什么原因呢?
难道有人访问的时候就生成不了吗?
求解决方法。


症状:有时可以成功,多数情况下生成失败。成功的时候和不成功的时候没有动过任何文件
...全文
808 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ER_JIN_ZHI 2011-05-25
  • 打赏
  • 举报
回复
最后确定是 ADoDB.stream 的 BUG
现在无奈首页换成 FSO GB2312
zl_c 2011-04-25
  • 打赏
  • 举报
回复
遇到同样的问题。
可能是adodb.stream的BUG吧——没辙了,只能这样想。

有人经常访问的文件,覆盖写入的时候,大部分时候是可以正常写入,有时出现写入失败。
没有人访问的文件,覆盖写入任何时候都是正常的。

回答权限或路径原因的朋友,请注意是“有时候正常,有时候失败”。

祝你找到答案,有答案了公布一下。
叼奶嘴的超人 2011-04-23
  • 打赏
  • 举报
回复
更改一下权限把,添加everyone用户!!!!!
linux921 2011-04-23
  • 打赏
  • 举报
回复
写入失败通常是路径问题或者权限问题

既然有时能写入,那就是程序输出的路径有问题!

把路径response出来检查检查

另外,readFile 的Type我习惯用2,以文本方式读取
灬上海爽爷 2011-04-22
  • 打赏
  • 举报
回复
Set MyFileObject=Server.CreateObject("Scripting.FileSystemObject")
IF MyFileObject.FileExists(server.mappath(filePath)) then '如果文件存在
xxx
else
xxx
end if
set myFileObject=nothing


FSO判断下。
toury 2011-04-22
  • 打赏
  • 举报
回复
估计是文件使用时无法覆盖导致。

你可以测试一下:
创建文件前用fso检查一下,如果文件存在,你就给文件改个名再写入。如果这样没问题那就是文件使用时无法覆盖了
ER_JIN_ZHI 2011-04-22
  • 打赏
  • 举报
回复
代码贴上来了,兄弟们看看,服务器上无毒,感觉好像是 生成的文件只有在没有人访问的时候才能生成成功,因为是首页 所以基本上实时有用户访问,我只是猜测,具体不知道是哪方面原因
hongmei85 2011-04-22
  • 打赏
  • 举报
回复
不会是服务器上有杀毒,给你弄出来这个问题吧
ER_JIN_ZHI 2011-04-22
  • 打赏
  • 举报
回复
放服务器上也可以正常使用,但是不是每次都正常,这点很郁闷,
ER_JIN_ZHI 2011-04-22
  • 打赏
  • 举报
回复
Function ReadTextFile(filePath,CharSet) 
dim stm
set stm=Server.CreateObject("adodb.stream")
stm.Type=1 'adTypeBinary,按二进制数据读入
stm.Mode=3 'adModeReadWrite ,这里只能用3用其他会出错
stm.Open
stm.LoadFromFile filePath
stm.Position=0 '把指针移回起点
stm.Type=2 '文本数据
stm.Charset=CharSet
ReadTextFile = stm.ReadText
stm.Close
set stm=nothing
End Function

'----写入文件------------------------
Sub WriteTextFile(filePath,fileContent,CharSet)
dim stm
set stm=Server.CreateObject("adodb.stream")
stm.Type=2 'adTypeText,文本数据
stm.Mode=3 'adModeReadWrite,读取写入,此参数用2则报错
stm.Charset=CharSet
stm.Open
stm.WriteText fileContent
response.write(filePath)
stm.SaveToFile filePath,2 'adSaveCreateOverWrite,文件存在则覆盖
stm.Flush
stm.Close
set stm=nothing
End Sub


权限有问题应该一次都不会生成成功吧
灬上海爽爷 2011-04-22
  • 打赏
  • 举报
回复
顺便说下。
xxx.SaveToFile ooo, 2
这个2是文件存在则覆盖

如果你设置成1的话是文件不存在则生成,那样的话如果文件存在也会出现写入失败。
toury 2011-04-22
  • 打赏
  • 举报
回复
忘了加调用方法了,看这个:

<%
s="aaaaaaaaaaaaaaaaaaaaa"
if writeFile("file/fileName.txt",s,"UTF-8") then
response.write "success!!"
else
response.write "failed!"
end if

function writeFile(path,byval Str,charset)
set m=server.CreateObject("adodb.stream")
m.Type=2'以本模式读取
m.mode=3
m.charset=charset
m.open
m.WriteText str
m.SaveToFile server.MapPath(path),2
m.flush
m.Close
set m=nothing
if err=0 then writeFile=true else writeFile=false;
end function
%>
灬上海爽爷 2011-04-22
  • 打赏
  • 举报
回复
通常都是文件夹的权限问题。
xxx.SaveToFile ooo, 2
这一句吧。。
在他之前输出
response.write(ooo)


看看对应的文件夹对来宾账户的写权限是否开放
toury 2011-04-22
  • 打赏
  • 举报
回复
给你个例子

function writeFile(path,byval Str,charset)
set m=server.CreateObject("adodb.stream")
m.Type=2'以本模式读取
m.mode=3
m.charset=charset
m.open
m.WriteText str
m.SaveToFile server.MapPath(path),2
m.flush
m.Close
set m=nothing
if err=0 then writeFile=true else writeFile=false;
end function
toury 2011-04-22
  • 打赏
  • 举报
回复
ADoDB.stream写文件也要设置编码的。晒下你的代码
feng0123456 2011-04-22
  • 打赏
  • 举报
回复
安照道理,不会这样,不过你生成之前应该将文件设置只读才行。
hfwtyyh 2011-04-22
  • 打赏
  • 举报
回复
权限问题

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧