'===========================================================
'-函数名称: URLDownloadFile_AdoStream (用ADO流对象的方法)
'-功能描述: 下载网络上的文件
'
'-输入参数: strURL ............ 必需,网络文件的URL。如:"http://86.83.188.1/AB.txt"
' strLocalFileName .. 必需,本地保存文件名,必须包含路径。 如:"D:\NEWAB.TXT"
'
'-返回参数: 成功下载返回:TRUE, 否则返回:FALSE
'
'-使用示例: URLDownloadFile_AdoStream "http://86.83.188.1/AB.txt", "D:\Dowdload\NewAB.TXT"
' URLDownloadFile_AdoStream “http://www.xixivi.com/attachments/month_1001/42010121223423.mp3","毕业.mp3"
'
'-作 者: 鱼儿游游
'-创建日期: 2011.05.19
'============================================================
Public Function URLDownloadFile_AdoStream(strURL As String, strLocalFileName As String) As Boolean
On Error GoTo Err_Handler
Dim oHttp As Object
Dim oStream As Object
URLDownloadFile_AdoStream = False '返回值初始化。
Set oHttp = CreateObject("Microsoft.XMLHTTP") '定义XMLHTTP对象。这样的方法,不用引用运行库。
oHttp.Open "GET", strURL, False '打开与服务端的连接。
oHttp.send '发送指令
If oHttp.ReadyState = 4 Then '检查服务器返回在处理请求时的进展状况:4__表示文档已经解析完毕,客户端可以接受返回消息。
If oHttp.Status = 200 Then '网络上存在指定的文件。
Set oStream = CreateObject("ADODB.Stream") '定义Stream对象。
oStream.Type = 1 '返回的数据类型:二进制
oStream.Open '打开对象。
oStream.write oHttp.responsebody '将指定的数据装入对象中。
oStream.savetofile strLocalFileName, 2 '如文件存在,直接覆盖。
URLDownloadFile_AdoStream = True '返回值为真:成功下载文件。
ElseIf oHttp.Status = 404 Then
MsgBox "指定下载的文件不存在!", vbExclamation, "下载文件出错"
End If
End If
Exit_Handler:
If oHttp.ReadyState = 4 And oHttp.Status = 200 Then oStream.Close
Set oStream = Nothing '释放Stream对象
Set oHttp = Nothing '释放XMLHTTP对象
Exit Function
Err_Handler:
URLDownloadFile_AdoStream = False
MsgBox "错误代码:" & err.Number & vbCr & vbCr & "错误描述:" & err.Description, vbExclamation, "下载文件出错"
Resume Exit_Handler
End Function