天天看點

VB.Net 使用FTPWebRequest下載下傳進度條

Public Sub DFile(ByVal Str_Path As String, ByVal Local_Path As String, ByVal Str_UserName As String, ByVal Str_Password As String)

        Dim URI As String = Str_Path

        Dim ftp As System.Net.FtpWebRequest = _

            CType(FtpWebRequest.Create(URI), FtpWebRequest)

        ftp.Credentials = New _

    System.Net.NetworkCredential(Str_UserName, Str_Password)

        ftp.KeepAlive = False

        ftp.UseBinary = True

        ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile

        Using response As System.Net.FtpWebResponse = _

      CType(ftp.GetResponse, System.Net.FtpWebResponse)

            '建立進度條,把他加入FORM中

            'Dim pb As New ProgressBar

            '設定最小值

            ProgressBar1.Minimum = 0

            Using responseStream As IO.Stream = response.GetResponseStream

                ''設定最大值

                ProgressBar1.Maximum = GetFileSize("ftp://1.1.1.1/xx.zip", "使用者名", "******")

                'loop to read & write to file

                Using fs As New IO.FileStream(Local_Path, IO.FileMode.Create)

                    Dim buffer(2047) As Byte

                    Dim read As Integer = 0

                    Do

                        read = responseStream.Read(buffer, 0, buffer.Length)

                        fs.Write(buffer, 0, read)

                        '每次讀取的長度

                        If ProgressBar1.Maximum > (ProgressBar1.Value + 2047) Then

                            ProgressBar1.Value += buffer.Length

                        Else

                            ProgressBar1.Value = ProgressBar1.Maximum

                        End If

                    Loop Until read = 0 'see Note(1)

                    responseStream.Close()

                    fs.Flush()

                    fs.Close()

                End Using

                responseStream.Close()

            End Using

            response.Close()

        End Using

        MsgBox("下載下傳完成", MsgBoxStyle.OkOnly + 48, "提示")

    End Sub

    Public Function GetFileSize(ByVal filename As String, ByVal Str_UserName As String, ByVal Str_Password As String) As Long

        Dim URI As String = filename

        Dim ftp As System.Net.FtpWebRequest = CType(FtpWebRequest.Create(URI), FtpWebRequest)

        ftp.Credentials = New System.Net.NetworkCredential(Str_UserName, Str_Password)

        ftp.Method = WebRequestMethods.Ftp.GetFileSize

        Dim response As FtpWebResponse = ftp.GetResponse

        GetFileSize = response.ContentLength

        response.Close()

    End Function

繼續閱讀