调用方式:
UploadFile("d:/lob.rar", False) ' 2个参数分别为 准备上传的文件完整路径、是否续传
功能函数:
Public Sub UploadFile(ByVal Str_LocalFileName As String, ByVal Bool_Resume As Boolean)
Dim LobSocket As Socket
Dim offset As Long
Dim input As FileStream
Dim bFileNotFound As Boolean
If (Not Logined()) Then
Logined()
End If
LobSocket = CreateDataSocket()
offset = 0
If (Bool_Resume) Then
Try
SetBinaryMode(True)
offset = GetFileSize(Str_LocalFileName)
Catch ex As Exception
offset = 0
End Try
End If
If (offset > 0) Then
SendCommand("REST " & offset)
If (Int_Reply <> 350) Then
offset = 0
End If
End If
SendCommand("STOR " & Path.GetFileName(Str_LocalFileName))
Str_Reply = ServerReply(True)
Int_Reply = Int32.Parse(Str_Reply.Substring(0, 3))
If (Not (Int_Reply = 125 Or Int_Reply = 150)) Then
MsgBox(Str_Reply.Substring(4))
End If
bFileNotFound = False
If (File.Exists(Str_LocalFileName)) Then
input = New FileStream(Str_LocalFileName, FileMode.Open)
If (offset <> 0) Then
input.Seek(offset, SeekOrigin.Begin)
End If
Int_Bytes = input.Read(Byte_Buffer, 0, Byte_Buffer.Length)
Do While (Int_Bytes > 0)
LobSocket.Send(Byte_Buffer, Int_Bytes, 0)
Int_Bytes = input.Read(Byte_Buffer, 0, Byte_Buffer.Length)
Loop
input.Close()
Else
bFileNotFound = True
End If
If (LobSocket.Connected) Then
LobSocket.Close()
End If
If (bFileNotFound) Then
MsgBox(Str_LocalFileName & "文件未找到,无法上传")
End If
Str_Reply = ServerReply(True)
Int_Reply = Int32.Parse(Str_Reply.Substring(0, 3))
If (Not (Int_Reply = 226 Or Int_Reply = 250)) Then
MsgBox(Str_Reply.Substring(4))
End If
End Sub
Public Function GetFileSize(ByVal sFileName As String) As Long
Dim size As Long
SendCommand("SIZE " & sFileName)
size = 0
Str_Reply = ServerReply(True)
Int_Reply = Int32.Parse(Str_Reply.Substring(0, 3))
If (Int_Reply = 213) Then
size = Int64.Parse(Str_Reply.Substring(4))
Else
MsgBox(Str_Reply.Substring(4))
End If
Return size
End Function