InternetReadFile函数问题

zykj_2000 2005-05-17 03:29:28
我在一个Activex中需要文件下载的功能, 使用了InternetReadFile这个API
我写了个函数
Function FileDownload(sUrl As Variant) As Boolean
Dim b(2048) As Byte
Dim s As String
Dim hOpen As Long
Dim hOpenUrl As Long
Dim bDoLoop As Boolean
Dim bRet As Boolean
Dim bbuffer As Byte
Dim sReadBuffer As String * 2048
Dim FileName As String
Dim lNumberOfBytesRead As Long
Dim F1 As Integer
F1 = FreeFile
FileName = "E:\BitSpirit\Torrent\1212.torrent"
Open FileName For Binary As F1
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
bDoLoop = True
Do While bDoLoop
sReadBuffer = vbNullString
bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)

sReadBuffer = Left(sReadBuffer, lNumberOfBytesRead)
Debug.Print sReadBuffer
Put F1, , sReadBuffer
If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
Loop

If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
If hOpen <> 0 Then InternetCloseHandle (hOpen)
Close #1
FileDownload = True
End Function
但是在使用过程中发现,InternetReadFile下载文本文件没有问题,返回过来全是正确的,但是一但下载二进制的文件,下载回来的数据就是错误的,还望高手解答
...全文
147 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zykj_2000 2005-05-18
有没有人来看一下啊,解决还可以加分啊
  • 打赏
  • 举报
回复
zykj_2000 2005-05-17
急啊,急啊,急啊
  • 打赏
  • 举报
回复
zykj_2000 2005-05-17
这些早就全试过了,
  • 打赏
  • 举报
回复
DooDu 2005-05-17
那就1024着读试试
  • 打赏
  • 举报
回复
zykj_2000 2005-05-17
不行,楼上的方法早就试过了,我在想能不能一个一个字节的读取数据,
  • 打赏
  • 举报
回复
DooDu 2005-05-17
不要这样边读边写,读完一块写试试

stTotal = vbNullString

循环里写:
If (sReadBuffer = 2048) Then
stTotal = stTotal & sReadBuffer
Else
stTotal = stTotal & StrConv(LeftB$(StrConv(sReadBuffer, vbFromUnicode), lNumberOfBytesRead), vbUnicode)
End If
  • 打赏
  • 举报
回复
相关推荐
发帖
网络编程

1494

社区成员

VB 网络编程
社区管理员
  • 网络编程
加入社区
帖子事件
创建了帖子
2005-05-17 03:29
社区公告
暂无公告