Вот какое дело, привожу код:
Private Sub Command3_Click()
If InternetCheckConnection("http://www.mail.ru/", FLAG_ICC_FORCE_CONNECTION, 0&) = 0 Then
MsgBox "Не могу подключиться", vbInformation
Exit Sub
End If
strURL = "http://домен/Project1.rar"
upd2_form.Inet1.Execute strURL, "Head"
'задержка, пока запрос не выполнен
Do
If Not upd2_form.Inet1.StillExecuting Then
Command3.Enabled = True
Exit Do
End If
DoEvents
Loop
Dim ldate As String
lLengthFile = CLng(upd2_form.Inet1.GetHeader("Content-length"))
ldate = upd2_form.Inet1.GetHeader("Last-modified")
upd2_form.Text2.Text = ldate
upd2_form.Text1.Text = lLengthFile & " байт."
upd_form.Hide
upd2_form.Show
На следующей форме:
Private Sub Command1_Click()
Inet1.Execute strURL, "GET"
PrBar1.Visible = True
End Sub
код события statechanged:
Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim intFile As Long
Select Case State
' ... Other cases not shown.
Case icConnecting '3
'MsgBox "Есть связь!"
Case icConnected '4
'MsgBox "Соединяюсь"
Case icDisconnecting '9
'MsgBox "Disconnecting"
Case icResponseCompleted ' 12
' Open a file to write to.
intFile = FreeFile
Open App.Path & "\Project1.rar" For Binary Access Write As #intFile
' Get the first chunk. NOTE: specify a Byte
' array (icByteArray) to retrieve a binary file.
vtData = Inet1.GetChunk(1024, icByteArray)
Do While LenB(CStr(vtData)) > 0
Put #intFile, , vtData
' Get next chunk.
vtData = Inet1.GetChunk(1024, icByteArray)
UpdateStatus Seek(1)
Loop
Put #intFile, , vtData
Close #intFile
Case icError
MsgBox "Произошла ошибка!", vbCritical, "Сообщение"
Exit Sub
End Select
End Sub
Sub UpdateStatus(lRec As Long)
Dim i As Long
i = lRec * 100 / lLengthFile
PrBar1.Value = i
DoEvents
End Sub
Скачивается без проблем и процесс отображается, НО файл, который сохраняется немного больше по размеру и если это архив, то грит, что неправильный формат архива или поврежден. Вот такая фигня.
Ответить
|