Function过程的返回值为空?

xh4010 2006-06-28 12:10:20
我在网上找一个将远程文件保存到本的程序:
'****************************************************************************
'PageName:GetRemoteFiles.asp
'Function:Download the files to Server
'Author:xiaotian
'Last Modified at:2003-3-19
'****************************************************************************

'取得远程文件并保存到本地
Function GetRemoteFiels(RemotePath, LocalPath, FileName)
Dim strBody
Dim FilePath

On Error Resume Next

'取得流
strBody = GetBody(RemotePath)
'取得保存的文件名
if Right(LocalPath, 1) <> "\" then LocalPath = LocalPath & "\"
FilePath = LocalPath & GetFileName(RemotePath, FileName)
'保存文件
if SaveToFile(strBody, FilePath) = true and err.Number = 0 then
GetRemoteFiles = true
else
GetRemoteFiles = false
end if

End Function

'远程获取内容
Function GetBody(url)
Dim Retrieval
'建立XMLHTTP对象
Set Retrieval = CreateObject("Microsoft.XMLHTTP")
With Retrieval
.Open "Get", url, False, "", ""
.Send
GetBody = .ResponseBody
End With
Set Retrieval = Nothing
End Function

'重组文件名
Function GetFileName(RemotePath, FileName)
Dim arrTmp
Dim strFileExt
arrTmp = Split(RemotePath, ".")
strFileExt = arrTmp(UBound(arrTmp))
GetFileName = FileName & "." & strFileExt
End Function

'将流内容保存为文件
Function SaveToFile(Stream, FilePath)
Dim objStream

On Error Resume Next

'建立ADODB.Stream对象,必须要ADO 2.5以上版本
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 '以二进制模式打开
objStream.Open
objstream.write Stream
objstream.SaveToFile FilePath, 2
objstream.Close()
'关闭对象,释放资源
Set objstream = Nothing

if err.Number <> 0 then
SaveToFile = false
else
SaveToFile = true
end if
End Function
%>

调用后没有返值, 但打开目的文件夹,文件已经保存成功!
这段程序哪里有问题?
...全文
364 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xh4010 2006-06-28
  • 打赏
  • 举报
回复
经过测试,如楼上所说位置出了问题,不管执行成不成功都返回false,可能是判断语名有问题:
if err.Number <> 0 then
应该怎么改?
slawdan 2006-06-28
  • 打赏
  • 举报
回复
if err.Number <> 0 then
SaveToFile = false
else
SaveToFile = true
end if

返回true \false

是不是没有正确接收?
xh4010 2006-06-28
  • 打赏
  • 举报
回复
程序中已设定了返回值:
成功(true),出错(false)

if SaveToFile(strBody, FilePath) = true and err.Number = 0 then
GetRemoteFiles = true
else
GetRemoteFiles = false
end if
tatty_bad 2006-06-28
  • 打赏
  • 举报
回复
有些函数就是不返回值的.
xh4010 2006-06-28
  • 打赏
  • 举报
回复
逐条调试,发现这条有问题:
objstream.write Stream

精通ADODB.Stream的快快帮忙解决
xh4010 2006-06-28
  • 打赏
  • 举报
回复
查了3001错误信息:变量或者类型不正确,或者不在可以接受的范围之内,要不就是与其他数据冲突。

问题不在Err.number,可能在这段代码上:
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 '以二进制模式打开
objStream.Open
objstream.write Stream
objstream.SaveToFile FilePath, 2
objstream.Close()
xh4010 2006-06-28
  • 打赏
  • 举报
回复
试过了,不行
anwell 2006-06-28
  • 打赏
  • 举报
回复
if err then
SaveToFile = false
else
SaveToFile = true
end if


这样试试
xh4010 2006-06-28
  • 打赏
  • 举报
回复
调试了,err.Number的值为3001
slawdan 2006-06-28
  • 打赏
  • 举报
回复
没法改~
err是系统内建对象
err.Number>0时就说明的确是出了问题的

你应该想办法把 err打印出来进行调试

28,390

社区成员

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

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