Buen día, pues yo tengo este código que diseñamos en la empresa:
Public Sub Archivar(ByVal OrigenArchivo As String, ByVal NombreArchivo As String, ByVal ExtensionArchivo As String, ByVal GuardarEnCarpeta As Carpetas)
Dim Carpeta As String = String.Empty
Select Case GuardarEnCarpeta
Case Carpetas.FOTOSEMPLEADOS : Carpeta = "FotosEmpleados/"
End Select
Dim clsRequest As System.Net.FtpWebRequest
'Dim ConexSockets As Net.Sockets.TcpClient
clsRequest = DirectCast(System.Net.WebRequest.Create("ftp://direccion/" & Carpeta & NombreArchivo & ExtensionArchivo), System.Net.FtpWebRequest)
clsRequest.Proxy = Nothing ' Esta asignación es importantisimo con los que trabajen en windows XP ya que por defecto esta propiedad esta para ser asignado a un servidor http lo cual ocacionaria un error si deseamos conectarnos con un FTP, en windows Vista y el Seven no tube este problema.
clsRequest.Credentials = New System.Net.NetworkCredential("usuario", "contraseña") ' Usuario y password de acceso al server FTP, si no tubiese, dejar entre comillas, osea ""
clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile
Dim bFile() As Byte = System.IO.File.ReadAllBytes(OrigenArchivo)
Dim clsStream As System.IO.Stream = _
clsRequest.GetRequestStream()
clsStream.Write(bFile, 0, bFile.Length)
clsStream.Close()
clsStream.Dispose()
End Sub
Espero te sirva