FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
¿Cómo escribir un archivo en un servidor FTP sobre TLS explicito desde ANDROID?
Tengo este código que funciona perfectamente en Windows, pero al ejecutar la aplicación en Android, la conexión a FTP es exitosa, pero al escribir el archivo, la aplicación se queda en pausa sin hacer nada.
Cabe señalar que en el servidor FTP, aparece que estoy cargando el archivo como en la imagen: Este es mi código Código:
procedure TForm1.Button1Click(Sender: TObject); begin IdFTP:=TIdFTP.Create(nil); IdSSLIO:=TIdSSLIOHandlerSocketOpenSSL.Create(nil); IdFTP.Disconnect(); {$ifdef mswindows} idopensslsetlibpath('C:\Users\usuario.empresa\Desktop\FTPSExample\SSL'); {$endif} {$ifdef android} idopensslsetlibpath(TPath.GetDocumentsPath); {$endif} IdSSLIO.SSLOptions.Method:=TIdSSLVersion.sslvSSLv23; IdSSLIO.PassThrough:=true; IdFTP.IOHandler:=IdSSLIO; IdFTP.ListenTimeout:=10000; IdFTP.ReadTimeout:=10000; IdFTP.TransferTimeout:=10000; IdFTP.ConnectTimeout:=10000; IdFTP.Passive:=true; IdFTP.UseTLS:=TIdUseTLS.utUseExplicitTLS; IdFTP.DataPortProtection:=TIdFTPDataPortSecurity.ftpdpsPrivate; IdFTP.Host := '(ip_ftp)'; IdFTP.Username := '(user)'; IdFTP.Password := '(pass)'; try IdFTP.Connect; try {$ifdef mswindows} IdFTP.Put('D:\SeLogro.txt','SeLogro.txt',false); {$endif} {$ifdef android} IdFTP.Put('storage/emulated/0/SeLogro.txt','SeLogro.txt',false); {$endif} ShowMessage('Ready!'); finally IdFTP.Disconnect(); end; except on E : Exception do begin ShowMessage('Exception class name = '+E.ClassName); ShowMessage('Exception message = '+E.Message); end; end; end; https://stackoverflow.com/questions/...r-explicit-tls Última edición por Neftali [Germán.Estévez] fecha: 15-12-2022 a las 09:21:29. Razón: Añadir la imagen y link |
#2
|
|||
|
|||
1- En Android el Almacenamiento interno se describe como "/sdcard"
2- Para hacer uso del almacenamiento interno en Delphi, debe otorgar los permisos al almacenamiento 3- Android 11 y superiores es un caso peculiar, para ello le compartí el link a un repositorio para solventar eso. 4- Le sugiero meter todos sus procesos "pesados" en un Thread Y sincronizar todo lo visual dentro de dicho thread (memos, mensajes, texto en labels, etc); resulta que en Android de no hacerlo, su app parecerá congelada y después se le mostrará el mensaje de "MyApp no responde".... Le sugiero ver el un ejemplo en este link: https://github.com/dani36652/DelphiThreadLoadingDialog Finalmente; su app pareciera congelarse por que la ruta de guardado no era la correcta (/user/emulated/0) en lugar de /sdcard o por que no otorgó los permisos al almacenamiento. Le hago llegar esta corrección esperando le sea de ayuda:
|
#3
|
|||
|
|||
Hola que tal, ya intenté lo sugerido sin éxito alguno, la respuesta de mi servidor es la misma que la de la imagen adjunta, me dice que esta subiendo el archivo "SeLogro.txt" pero nunca termina y en mi servidor aparece el archivo ".txt" con 0 bytes, tendrás alguna otra idea, creo que ya estoy agotando todas las posibilidades, el celular de donde efectuó las pruebas tiene Android 9, espero sirva de algo y muchas gracias por tu pronta respuesta.
|
#4
|
|||
|
|||
Me parece que Android a diferencia de Windows metió ciertas restricciones con FTP por lo que se recomienda hacer uso de SFTP. Voy a investigarle, probablemente haya que escribir algo en el manifest.xml como para poder conectar mediante http. Si encuentro la solución la comparto lo antes posible.
|
#5
|
||||
|
||||
La "sdcard" es la tarjeta externa, ahí si tienes que "jugar" con los permisos necesarios.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
FTP explicíto sobre TLS | newtron | Varios | 2 | 26-04-2022 09:34:43 |
Conexión con FTP explícito sobre TLS | andres_89 | C++ Builder | 7 | 15-10-2015 18:00:35 |
Sobre Escribir un archivo de texto | mangel | Varios | 7 | 04-06-2012 22:29:04 |
escribir cliente desde servidor WEB | JuanErasmo | .NET | 4 | 15-01-2008 15:48:04 |
Programa para sobre escribir un archivo | Yusk333 | C++ Builder | 9 | 29-09-2007 21:43:43 |
|