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下载文本文件没有问题,返回过来全是正确的,但是一但下载二进制的文件,下载回来的数据就是错误的,还望高手解答
...全文
160 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

1,502

社区成员

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

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