我试过了很多方法都未能获得当前已下载的文件大小,还请各位大侠帮帮忙,该如何检测?

解决方案 »

  1.   

    Private m_lngDocSize As Long'该变量用于存储Web页面文件大小Private Const strURL = "http://vip.6to23.com/NowCan1/project/HumanManage.exe"
    Private Const FileName = "HumanManage.exe"Private Sub Command1_Click()'文件大小值复位
    m_lngDocSize = 0'复位进度条控件
    ProgressBar1.Value = 0.001'显示进度的标签内容设为空
    lblProgressInfo.Caption = ""'定义ITC控件使用的协议为HTTP协议
    Inet1.Protocol = icHTTP'调用Execute方法向Web服务器发送HTTP请求
    Inet1.Execute Trim$(strURL), "GET"
    lblProgressInfo.Caption = "请等待..."
    End Sub
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Shell App.Path & "\" & FileName, vbNormalFocus
    End SubPrivate Sub Inet1_StateChanged(ByVal State As Integer)Dim binBuffer() As Byte
    Dim sngProgerssValue As Single
    Dim iBlock As LongOn Error Resume Next
    iBlock = 0Select Case State    Case icResponseCompleted
            '打开文件供写入
            Open App.Path & "\" & FileName For Binary Access Write As #1        Do '从缓冲区读取数据
                DoEvents            binBuffer = Inet1.GetChunk(512, icByteArray)
                'strText = strText & strBuffer
                iBlock = iBlock + 1
                If m_lngDocSize > 0 Then
                    '获得进度百分比值
                    sngProgerssValue = Int((iBlock * 512 / m_lngDocSize) * 100)
                    '更新进度标签显示内容
                    lblProgressInfo.Caption = "已下载 " & CStr(iBlock * 512) & " 字节 (" & CStr(sngProgerssValue) & "%)"
                    '用新值更新进度条控件
                    ProgressBar1.Value = sngProgerssValue
                    '写入文件
                    Put #1, , binBuffer()
                End If        Loop Until iBlock * 512 >= m_lngDocSize
            '关闭文件
            Close #1
            MsgBox "升级完成", vbOKOnly Or vbInformation, "在线升级"    Case icResponseReceived        If m_lngDocSize = 0 Then            '读取页面文件大小
                If Len(Inet1.GetHeader("Content-Length")) > 0 Then
                    m_lngDocSize = CLng(Inet1.GetHeader("Content-Length"))
                    If (m_lngDocSize = 0) Then
                        MsgBox "读取远程数据出错", vbOKOnly Or vbExclamation, "在线升级"
                    End If            Else
                    MsgBox "ERROR!", vbOKOnly Or vbExclamation, "在线升级"
                End If        End If    Case icError
            MsgBox "与主机通信出错", vbOKOnly Or vbExclamation, "在线升级"    Case icResolvingHost
            lblProgressInfo.Caption = "正在查找主机..."    Case icHostResolved
            lblProgressInfo.Caption = "已经找到主机"    Case icConnecting
            lblProgressInfo.Caption = "正在联系主机"    Case icConnected
            lblProgressInfo.Caption = "已经连接到主机"    Case icRequesting
            lblProgressInfo.Caption = "正在发送请求..."    Case icRequestSent
            lblProgressInfo.Caption = "成功发送请求"    Case icReceivingResponse
            lblProgressInfo.Caption = "正在接收回应..."    Case icDisconnecting
            lblProgressInfo.Caption = "正在断开连接..."    Case icDisconnected
            lblProgressInfo.Caption = "已经断开连接"End SelectEnd Sub