g87616758 发表于 2015-5-28 10:57:38

VB.Net实现Ftp下载的方法

  调用方式:
  DownloadFile("abc.rar","d:\abc.rar","Flase") '3个参数分别为远程ftp的文件名、保存到本地的完整路径、是否续传
  功能函数:
  Public Sub DownloadFile(ByVal Str_RemoteFileName As String, _
                               ByVal Str_LocalFileName As String, _
                               ByVal Bool_Resume As Boolean)
      Dim Data_St As Stream
      Dim output As FileStream
      Dim LobSocket As Socket
      Dim offset, npos As Long
      If (Not Logined()) Then
            Logined()
      End If
      SetBinaryMode(True)
      If (Str_LocalFileName.Equals("")) Then
            Str_LocalFileName = Str_RemoteFileName
      End If
  If (Not (File.Exists(Str_LocalFileName))) Then
            Data_St = File.Create(Str_LocalFileName)
            Data_St.Close()
      End If
  output = New FileStream(Str_LocalFileName, FileMode.Open)
      LobSocket = CreateDataSocket()
      offset = 0
  If (Bool_Resume) Then
            offset = output.Length
  If (offset > 0) Then
                SendCommand("REST " & offset)
                Str_Reply = ServerReply(True)
                Int_Reply = Int32.Parse(Str_Reply.Substring(0, 3))
                If (Int_Reply350) Then
                  offset = 0
                End If
            End If
  If (offset > 0) Then
                npos = output.Seek(offset, SeekOrigin.Begin)
            End If
      End If
  SendCommand("RETR " & Str_RemoteFileName)
      Str_Reply = ServerReply(True)
      Int_Reply = Int32.Parse(Str_Reply.Substring(0, 3))
  If (Not (Int_Reply = 150 Or Int_Reply = 125)) Then
            MsgBox(Str_Reply.Substring(4))
      End If
  Do While (True)
            Array.Clear(Byte_Buffer, 0, Byte_Buffer.Length)
            Int_Bytes = LobSocket.Receive(Byte_Buffer, Byte_Buffer.Length, 0)
            output.Write(Byte_Buffer, 0, Int_Bytes)
  If (Int_Bytes
页: [1]
查看完整版本: VB.Net实现Ftp下载的方法