lunes, 21 de junio de 2010

Como enviar un archivo a un servidor FTP en VB.Net

lunes, 21 de junio de 2010

El asunto es este: nos encargan una aplicacion o un modulo, dentro de nuestro sistema principal, en la cual se pueda enviar y recepcionar archivos (documentos o lo que sea) en la cuales se contiene informacion importante para la empresa para uno o varios usuarios a los cuales ira dirigido justamente el archivo. Para esto tendra en cuenta lo sieguiente:

* Contar con una PC o Servidor FTP donde se almacenaran y se tendran acceso desde cualquier punto del planeta y en cualquier momento a los archivos.
* Contar con los campos adecuados en una tabla de nuestra BD que indique el codigo del usuario, nombre del archivo (ejemplo.doc) etc.
* Contar con una buena linea de internet

Ojo que aca ya no voy a detallar que codigo utilizar en vb.net y en SQL Server para guardar los parametros en la BD de los campos mencionados, porque eso estara definido por cada programador, solo mostrare un ejemplo de como enviar un archivo del FTP:

Codigo:

Donde OrigenArchivo podria ser "c:\ejemplo.doc" y NombreArchivo podria ser "Archiv0_0001.doc", pues yo les recomiendo usar un correlativo al momento de asignar el nombre al archivo en el server FTP ya que podria ocacionar error si el enviamos con un nombre que de un archivo que ya existe en la carpeta de destino creado en el server FTP, eh ahi la importancia de guardar el datos del nombre (ejemplo.doc) para que cuando recepcionemos o descarguemos el archivo se guarde en el disco local con el nombre original.



Public Shared Sub EnviarArchivoFTP(ByVal OrigenArchivo As String, ByVal NombreArchivo As String)
Dim clsRequest As System.Net.FtpWebRequest
Dim conexion As Net.Sockets.TcpClient
clsRequest = DirectCast(System.Net.WebRequest.Create("ftp://xxx.xx.xxx.xxx/archivos/NombreArchivo"), 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", "password") ' Usuario y password de acceso al server FTP, si no tubiese, dejar entre comillas, osea ""
clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile
Try
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()
Catch ex As Exception
MsgBox(ex.Message + ". El Archivo no pudo ser enviado, intente en otro momento")
End Try
End Sub


Post relacionados :

8 comentarios:

Anónimo dijo...

Gracias por el concepto, lo trabajaba de otra forma, hay que tener en cuenta que es necesario mantener las actualizaciones del .NET para que funcione correctamente las aplicaciones

dj kros dijo...

esta buenisima y super fácil, gracias.

Anónimo dijo...

Public Shared Sub EnviarArchivoFTP(ByVal OrigenArchivo As String, ByVal NombreArchivo As String)

ME MUESTRA ESTE ERROR EN LA LINEA ANTERIOR:
LA INSTRUCCION NO ES VALIDA EN UN ESPACIO DE NOMBRE

PORQUE SUCEDE ESO?

Anónimo dijo...

seguramente estas proporciando datos a los parametros que nada tienen que ver con tipo de dato string

Anónimo dijo...

me arroja este error
Error en el servidor remoto: 227 Entering Passive Mode

Anónimo dijo...

Tengo un código parecido al que tienes y funciona correctamente localmente, pero al momento de publicar la página me envía un error porque busca el archivo dentro del servidor donde tengo montada la página y no la lee de la pc del usuario, ¿que tengo que modificar para poder leer el archivo de la computadora del usuario?

Leopoldo dijo...

Muy bueno.
También ejemplos básicos: http://tupagina.comuf.com/

Anónimo dijo...

buenisimo y full explicacion y nada de complejo.. asi es como se trabaja maestro ... gracias.

Publicar un comentario

Buscar

 
Copyright © 2009 .Net Solucion