Mostrando entradas con la etiqueta FTP. Mostrar todas las entradas
Mostrando entradas con la etiqueta FTP. Mostrar todas las entradas

viernes, 2 de julio de 2010

¿Porque mi archivo descargado desde mi servidor FTP no se guarda en la carpeta que cree desde mi aplicación en vb.Net?

viernes, 2 de julio de 2010

Estas compilando tu Aplicación en vb.Net que te permitirá descargar los archivos del servidor FTP y todo te sale a la perfección, es decir: estableces la conexión con el Server FTP, tu archivo descargado se guarda en la carpeta que tu has asignado desde código fuente en la ruta de tu aplicación por defecto, es decir "c:\Archivos de Programas\Mi Aplicación\Archivos del FTP\archivo.doc". De pronto, vas a otra maquina, instalas tu Aplicación para probarlo (según tu para jactarte) y te das cuenta que tu Archivo que supuestamente descargaste no aparece en la carpeta deseada ¿Que paso?

La razón de este problemilla?: pues sinceramente no estoy seguro pero todo indica que se trata de los Permisos de Windows ya que estas carpetas son especiales y no pueden ser alteradas desde otra fuente que no sea la acciones directas del usuario mismo como: guardar, eliminar, modificar los archivos (las cuales contienen) desde su interior, por el contrario ya que deseamos alterarlas desde una fuente intermedia haciendo uso de nuestra Aplicación, necesitaríamos un código especial que nos permitiese realizar justamente estas acciones dentro de las carpetas en cuestión.

Señores yo les recomendaria lo siguiente: Evita descargar el archivo en un dirección que pudiera incluir carpetas del Sistema Operativo (Windows, Archivos de Programas, Mis Documentos, etc), que comúnmente (supongo) sería por ejemplo "c:\Archivos de Programas\Mi sistema\Archivos ftp\archivo.doc", ya que podría ocasionar un error o en todo caso ¡no mostrar el error! pero en cambio ¡no guardar el archivo! (lo que sucedió en mi caso), asi que evítalo y no te compliques, yo te sugiero guardarlo en otra unidad o por ejemplo en "C:\Archidos FTP". O Si consigues algun codigo o propiedad que nos permita realizar estas acciones por favor ¡compártalas hombre!, y mucho mejor si los publicais en nuestro blog, tu solución alternativa.

Aca los dejo el código en vb.Net para orientarlos:

Dim ruta_archivo As String
' Si la carpeta donde deseamos guardar nuestros archivos no esta creado , pues que creen, lo creamos pues
If Not Directory.Exists("c:\Archivos FTP") Then
Directory.CreateDirectory("c:\Archivos FTP")
End If
ruta_archivo = "c:\Archivos FTP\archivodescargado.doc"

'importante, es necesario comprobar si el archivo ya existe para abrirlo o ejecutarlo (si es que esa es tu intensión) directamente y no enviar otra vez la solicitud de descarga del servidor FTP
If Not File.Exists(ruta_archivo) Then
Try
DescargarArchivoFTP(ruta_archivo, "archivodescargado.doc") ' Click aqui para ver el procedimiento en la cual descarga el archivo
Catch ex As Exception
MsgBox(ex.Message)
Exit Sub
End Try
End If
End If
Try
System.Diagnostics.Process.Start(ruta_archivo) ' si es que tu intension es abrir oejecutar el archivo
GrabarEstado()
Catch ex As Exception
MsgBox(ex.Message)
End Try

Leer mas

martes, 22 de junio de 2010

Verificar la conexion a un servidor FTP en vb.net

martes, 22 de junio de 2010

Ahora bien, tenemos el siguiente problema, resulta que a veces nuestra linea estan lenta o en el peor de los casos algun gracioso desconecto nuestro servidor FTP y todos los archivos que se tratan de enviar no llegan a su destino ya que si no nos apresuramos nos pueden linchar los usuarios de nuestro sistema, bueno aca esta claro que hay un problema de conectividad, para cualesquiera que sea el caso, es necesario verificar (validar, comprobar, etc etc) justamente si esta disponible nuestro server en ese momento que que enviamos o descargamos los archivos y de esa forma apaciguar los animos de quienes lo requieren con un mensaje como "La linea que Telefonica nos provee esta pesima, asi que tranquilizate e intenta mas tarde enviar tu archivo".

Pues bien ahora mostrare un fragmento de como resolver (en todo caso, advertir) este problemilla en codigo Visual Basic 2008

Codigo:

Imports System.Net

Private Function VerificarConecFTP() As Boolean

Dim ClienteFtp As New Sockets.TcpClient
Try
ClienteFtp.Connect("2oo.48.xx.xxx", 21) ' ojo, solo IP del server FTP
VerificarConecFTP= True ' si devuelve True significa que hay conexion
Catch Ex As Exception
MsgBox(Ex.Message) ' escriba el mensaje que mas te salve del apuro
VerificarConecFTP= False ' si devuelve False significa que tienes que ir corriendo a ver que pasa en el server
End Try
End Function

Leer mas

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

8 comentarios

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

Leer mas

lunes, 21 de junio de 2010

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

lunes, 21 de junio de 2010 8 comentarios

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

Leer mas

Buscar

 
Copyright © 2009 .Net Solucion