DownloadFileFromWebsite

Public Function DownloadFileFromWebsite(ByVal strURL As System.String, _
                                            ByVal strOutputPath As System.String, _
                                            Optional ByVal bDisplayProgress As System.Boolean = False) _
    As System.Boolean

        Dim bSuccess As System.Boolean
        Dim objWebRequest As System.Net.WebRequest = Nothing
        Dim myWebResponse As System.Net.WebResponse = Nothing
        Dim objOutputFile As System.IO.FileStream = Nothing
        Dim objBuffer(1024 * 5 - 1As Byte     'buffer size set to 5K bytes
        Dim iRead As System.Int32 = 0
        Dim lTotalDownloaded As System.Int64 = 0
        Dim lTotalLength As System.Int64 = 0
        Dim dPercentComplete As System.Double = 0

        Try
            objWebRequest = System.Net.WebRequest.Create(strURL)
            objWebRequest.Timeout = 20000
            myWebResponse = objWebRequest.GetResponse()

            objOutputFile = New System.IO.FileStream(strOutputPath, IO.FileMode.Create)
            lTotalLength = myWebResponse.ContentLength

            Do While (True)
                iRead = myWebResponse.GetResponseStream.Read(objBuffer, 0, objBuffer.Length)
                If iRead = 0 Then
                    Exit Do
                End If

                objOutputFile.Write(objBuffer, 0, iRead)
                lTotalDownloaded += iRead

                If bDisplayProgress Then
                    For i As System.Int32 = 0 To 100
                        Console.Write(ControlChars.Back)
                    Next

                    dPercentComplete = System.Convert.ToDouble(lTotalDownloaded) / lTotalLength * 100
                    Console.Write("Downloaded " + lTotalDownloaded.ToString + " of " + lTotalLength.ToString + " bytes, " + dPercentComplete.ToString("N2") + "% complete")
                End If
            Loop

            bSuccess = True

        Catch ex As Exception
            Console.WriteLine("Error: " + ex.Message)
            bSuccess = False

        Finally
            'close streams
            objOutputFile.Close()
            myWebResponse.Close()
        End Try

        Return bSuccess
    End Function
posted @ 2012-04-25 18:40  xpwilson  阅读(163)  评论(0编辑  收藏  举报