martes, 22 de junio de 2010

Como bajar o descargar un archivo de un servidor FTP en vb.Net

martes, 22 de junio de 2010

En el anterior artículo se puso un ejemplo en la cual el sistema de nuestra empresa tiene por objetivo controlar todos los archivos que nuestros usuarios se enviaban entre si y en la cual debiamos nosotros, como programadores, ver la forma de como subir o enviar un archivo a un servidor FTP en vb.net (o de lo contrario nos despedian del trabajo), ahora les desifraremos el codigo para su contraparte: descargar o bajar un archivo.
Tal como habiamos indicado en el otro tema, aca son necesarios algunas recomendaciones:

* Tener una buena linea de internet, ya que descargar es menos rapido (o mas lenta) que subir un archivo a un servidor, esta consideracion es muy importante ya que podria ocacionar un error si caduca el tiempo de espera para establecer conexion con el FTP que generalmente es por tener una linea pesima.
* contar con los campos necesarios en nuestra BD (suponemos SQL Server)para que este sea eficaz de controlar dichas transferencias de los archivos, los datos como el nombre del archivo, nombre del usuario remitenete y destino, hora y fecha de recepcion sera las claves de un buen control.
* Bueno, demas esta decir que tienen que contar con un Server FTP donde se almacenan y de donde se "jalaran" los archivos a las PC de cada usuario que acceda a ellas desde cualquier punto del universo y desde cualquier epoca de en un futuro muy lejano.

Este es el ejemplo en codigo Visual Basic 2008
Donde RutaArchivo vendria a ser la carpeta en nuestro disco duro donde se guardara el archivo descargado y podria ser "c:\descargas\nombre_original_segun_BD.doc" y NombreArchivo el nombre con la cual esta almacenada en el server FTP, si consultamos bien los parametros no tendriamos problemas en obtener el archivo al cual deseamos acceder ya que supuestamente cada archivo en el server FTP esta registrada en la Base de Datos, he aqui la importancia de guardar los datos que estan relacionados con el archivo.

Public Sub DescargarArchivoFTP(ByVal RutaArchivo As String, ByVal NombreArchivo As String)
Dim localFile As String = RutaArchivo
Dim remoteFile As String = NombreArchivo
Const host As String = "ftp://xxx.xx.xx.xxx/archivos/" 'nombre de la carpeta en nuestro server FTP donde estan los archivos que deseamos descargar
' colocamos el nombre de usuario y password respectivo para acceder al server, si este no poseyera, dejar solo las comillas, osea ""
Const username As String = "usuario"
Const password As String = "password"
Dim URI As String = host + remoteFile ' nombre completo de la ruta del archivo
Dim ftp As System.Net.FtpWebRequest = CType(Net.FtpWebRequest.Create(URI), Net.FtpWebRequest)
ftp.Credentials = New _
System.Net.NetworkCredential(username, password)
ftp.KeepAlive = False
ftp.UseBinary = True
ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile
Try
Using response As System.Net.FtpWebResponse = _
CType(ftp.GetResponse, System.Net.FtpWebResponse)
Using responseStream As IO.Stream = response.GetResponseStream
Using fs As New IO.FileStream(localFile, 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)
Loop Until read = 0
responseStream.Close()
fs.Flush()
fs.Close()
End Using
responseStream.Close()
End Using
response.Close()
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub


Post relacionados :

8 comentarios:

Anónimo dijo...

un consejo:
este codigo lo he tenido que desarrollar en la uni
y me parece mejor añadirlo desde un Boton

Anónimo dijo...

A mi me parece perfecto asi, lo pones en un modulo y lo mandas llamar desde cualquier parte de tu proyecto... Gracias por la aportacion =)

Anónimo dijo...

Hola

me indica error de permisos a la carpeta local, como se los doy.

Unknown dijo...

Hola me indica este error:

No se puede encontrar una parte de la ruta de acceso 'C:\Temporal\

que puedo hacer?
la carpeta ya esta creada

Anónimo dijo...

se supone que tus archivos deben guardarse en una ruta que haga referencia a tu FTP y no a tu disco local

Anónimo dijo...

Es un poco truño este código, ¿referencia a FTP?, no es preferible que se descarge en ruta del pc, puag, cambia la descripción

Anónimo dijo...

El problema es que el archivo bajado, se queda bloqueado y no hay forma de utilizarlo, si no se cierra el programa.

Anónimo dijo...

Como se pone la ruta, que haga referencia a tu FTP

Publicar un comentario

Buscar

 
Copyright © 2009 .Net Solucion