如何下载一个指定url的文件。

every12555 2002-08-15 01:28:34
如http:\\www.aaa.com\aa.rar及文件的大小及下载的进度?
我看了一个winsock的示例,但他没有判断目标文件是否存在。用winsock怎样能判断目标文件是否存在?
...全文
157 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
every12555 2002-08-16
  • 打赏
  • 举报
回复
怎样取得欲下载的文件的大小和已经下载的长度。
tg123 2002-08-15
  • 打赏
  • 举报
回复
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Public Function DownloadFile(URL As String, LocalFilename As String) As Boolean
Dim lngRetVal As Long
lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
If lngRetVal = 0 Then DownloadFile = True
End Function
Private Sub Form_Load()
'example by Matthew Gates (Puff0rz@hotmail.com)
DownloadFile "http://www.allapi.net", "c:\allapi.htm"
End Sub
every12555 2002-08-15
  • 打赏
  • 举报
回复
griefforyou(为你伤心) 你的示例我用了,可是有问题。我试着下载一个523K的文件,只下载了21就到100%,下载其他文件也有类似问题。
shawls 2002-08-15
  • 打赏
  • 举报
回复
注意

Dim sBuffer As String * 256

这个限制了字符最多256个,自己调整

shawls 2002-08-15
  • 打赏
  • 举报
回复
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, _
ByVal lAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, _
ByVal lFlags As Long) As Long

Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" ( _
ByVal hInternetSession As Long, _
ByVal sURL As String, _
ByVal sHeaders As String, _
ByVal lHeadersLength As Long, _
ByVal lFlags As Long, _
ByVal lContext As Long) As Long

Private Declare Function InternetReadFile Lib "wininet.dll" ( _
ByVal hFile As Long, _
ByVal sBuffer As String, _
ByVal lNumBytesToRead As Long, _
lNumberOfBytesRead As Long) As Integer

Private Declare Function InternetCloseHandle Lib "wininet.dll" ( _
ByVal hInet As Long) As Integer


Private Function GetUrlSource(sURL As String) As String
Dim sBuffer As String * 256, iResult As Integer, sData As String
Dim hInternet As Long, hSession As Long, lReturn As Long

'get the handle of the current internet connection
hSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)
'get the handle of the url
If hSession Then
hInternet = InternetOpenUrl(hSession, sURL, vbNullString, 0, &H4000000, 0)
End If
'if we have the handle, then start reading the web page
If hInternet Then
'get the first chunk & buffer it.
iResult = InternetReadFile(hInternet, sBuffer, 256, lReturn)
sData = sBuffer
'if there's more data then keep reading it into the buffer
Do While lReturn <> 0
iResult = InternetReadFile(hInternet, sBuffer, 256, lReturn)
sData = sData + Mid(sBuffer, 1, lReturn)
Loop
End If

'close the URL
iResult = InternetCloseHandle(hInternet)

GetUrlSource = VBA.Replace(sData, VBA.Chr(0), "")
End Function
griefforyou 2002-08-15
  • 打赏
  • 举报
回复
我用Inet控件写的,有进度条!
http://www14.brinkster.com/weblover/httpDownload.rar

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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