Page 1 of 1
oFtp:Directory() devuelve nombres erroneos
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Mon Jun 11, 2018 4:58 pm
by hmpaquito
Hola,
El metodo Directory de la clase oFtp devuelve, algunas veces, nombres de ficheros con caracteres extraños y/o incluyendo varios archivos en el mismo nombre ?
El asunto me viene pasando desde hace varios años, pero sólo hoy me he atrevido a explicar.
No he visto este asunto referenciado en el foro. ¿ Alguna idea de alguien ?
Salu2
Re: oFtp:Directory() devuelve nombres erroneos
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Mon Jun 11, 2018 6:37 pm
by karinha
Re: oFtp:Directory() devuelve nombres erroneos
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Tue Jun 12, 2018 3:53 pm
by hmpaquito
Estimado Señor,
Lo que vd. me propone es un cambio total en mi forma de manejar el Ftp.
Yo, en cambio, sólo preguntaba por un pequeño error que tiene la clase Ftp.
Gracias en todo caso.
Re: oFtp:Directory() devuelve nombres erroneos
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Wed Jun 13, 2018 6:00 pm
by Carlos Mora
Estimado Paquito,
¿Puede ser que el servidor esté enviando los nombres en UTF-8? Si es así seguramente se ven mal. ¿Puedes subir un ejemplo para ver cual es el posible cambio?
Eso de tener varios ficheros con el mismo nombre puede ser provocado por la confusión al consultar si existe un determinado fichero con un caracter especial (con tilde, por ejemplo).
Un saludo
Re: oFtp:Directory() devuelve nombres erroneos
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Thu Jun 14, 2018 7:19 am
by hmpaquito
Estimadísimo Carlos,
Un ejemplo de fichero que erroneamente devuelve el metodo oFtp:Directory(), sería este:
"045in 0 LŒ. € È`RÿÓ Ÿ D FILECSV.zip"
El archivo real es FILECSV.zip, pero lo devuelve con caracteres sucios. Practicamente pasa siempre que hago un oFtp:Directory()
Utilizo la clase TFtp y el metodo de oFtp:Directory() originales.
Gracias por tu interés.
Re: oFtp:Directory() devuelve nombres erroneos
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Fri Jun 22, 2018 10:41 am
by hmpaquito
Vuelvo con el asunto.
He hecho unas investigaciones y todo apunta a que el problema es un problema de codificacion.
Pareciera que hay que apagar el UTF8 antes de hacer el
oftp:directoryLo que me parece muy raro es que a nadie le haya pasado antes.
¿ Es que nadie usa ftp-fwh contra servidores trabajando en utf-8?
https://stackoverflow.com/questions/117 ... g/26101338La pregunta seria: ¿ Como mandar al ftp el comando OPTS UTF8 OFF ?
Re: oFtp:Directory() devuelve nombres erroneos
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Fri Jun 22, 2018 10:51 am
by cnavarro
Actualmente tienes el UTF8 activo en tu aplicacion?
Si no es asi, deberías probar activando el UTF8, quiero decir en el proceso que utiliza FTP
- Code: Select all Expand view
local cOldCode := HB_SETCODEPAGE( "UTF8" )
//local lUni := FW_SetUnicode( .T. )
.../..
HB_SETCODEPAGE( cOldCode )
//FW_SetUnicode( lUni )
Re: oFtp:Directory() devuelve nombres erroneos
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Fri Jun 22, 2018 11:16 am
by hmpaquito
Cristobal,
Gracias por tu respuesta, pero no creo que deba ser eso.
A veces el oFtp:Directory me devuelve archivos con este nombre:
è`r+``er`w´rèëëé3´´3algo.zipr`w´rèëëé3fichero.zip
donde se puede observar que vienen dos archivos. Es como si no entendiera el caracter LF o asi. Es como si el server ftp estuviera en *nix OS y no se entendiera con Windows.
Esto ya lo vi hace tiempo con otra aplicacion. Para "salvarlo" lo que hice fue depurar el array aDir devuelto en aDir:= oFtp:Directory()
Lo curioso es que a nadie más le haya pasado.
Saludos
Re: oFtp:Directory() devuelve nombres erroneos
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Fri Jun 22, 2018 11:57 am
by cnavarro
hmpaquito wrote:Cristobal,
Gracias por tu respuesta, pero no creo que deba ser eso.
Saludos
Paco, si puedes, prueba lo que te digo a ver qué te devuelve
Re: oFtp:Directory() devuelve nombres erroneos
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Fri Jun 22, 2018 12:03 pm
by hmpaquito
Cristobal,
Ok, haré lo que me dices.
Voy a hacer un testing a ver que me devuelve antes y despues, indicando la codificacion que me dices.
gracias por tu interés.
Re: oFtp:Directory() devuelve nombres erroneos
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Fri Jun 22, 2018 2:16 pm
by hmpaquito
Traigo un ejemplo del array que devuelve el metodo
oFtp:Directory() (está todo pasado a cadena)
- Code: Select all Expand view
{ [1]C. Len: 12 "011XSL.zip" [2]N. 1740 [3]D. 21/06/18 [4]C. Len: 8 "18:25:00" }
{ [1]C. Len: 12 "015XSL.zip" [2]N. 529 [3]D. 21/06/18 [4]C. Len: 8 "18:01:00" }
{ [1]C. Len: 44 "034in æû) Ô Ì D 011XSL.zip" [2]N. 0 [3]D. 21/06/18 [4]C. Len: 8 "14:10:00" }
{ [1]C. Len: 44 "045BuscaClientes.dat D 015XSL.zip" [2]N. 26403 [3]D. 20/06/18 [4]C. Len: 8 "20:23:00" }"
Si os dais cuenta, los dos primeros items son correctos: dos ficheros. En cambio los dos ultimos están mal: tienen caractereres extraños, uno contiene dos nombres de archivo.
Re: oFtp:Directory() devuelve nombres erroneos
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Fri Jun 22, 2018 8:54 pm
by hmpaquito
Cristobal,
Acabo de probar tu indicacion y sigue saliendo mal.
¿ Alguna idea más que puedas compartir ?
Gracias
PD 1. El UTF8 del hb_SetCodePage() lo coge bien puesto que lo muestro, despues de establecerlo con msgInfo(hb_setCodePage()) y muestra UTF8
PD 2. Es como si la clase TFtp no recogiese bien el directory porque no se parase en el separador LF o el que corresponda y por tanto mezclara mas de un nombre de archivo con cada archivo y ademas le añadiera basura.
** EDITADO 23/6/18 **
Adjunto codigo fuente de la prueba
- Code: Select all Expand view
//-------------------------------------------------------------------------//
static function probandoftp()
local oInternet := TInternet():New()
local oFtp
local aFiles
Local nI, aMask, cIp, nPuerto, cUser, cPassword
Local cFolder:= ""
Local cFull
Local lPasivo:= .t.
REQUEST HB_CODEPAGE_UTF8
Local cOldCode
cOldCode:= Hb_SetCodepage("UTF8")
msginfo(coldcode, hb_setcodepage())
cIp := "prueba.algo.com"
nPuerto := 2043
*
cUser := "ELUSUARIO"
cPassword:= "4c3PASS"
*
oFTP := TFTP():New( cIp, oInternet, cUser, cPassword, lPasivo, nPuerto )
if ! Empty( oFTP:hFTP )
amask:= {"*.zip", "*.*", "*.sql"}
for ni:= 1 to len(amask)
cFull:= cFolder+ "/"+ aMask[nI]
aFiles = oFTP:Directory( cFull)
msgInfo(hb_valtoexp(aFiles))
next
else
msginfo("oFtp:hFtp is Null")
endif
oInternet:End()
MsgInfo( "Done!" )
HB_SETCODEPAGE( cOldCode )
return nil
*
Re: oFtp:Directory() devuelve nombres erroneos
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Sat Jun 23, 2018 2:04 pm
by hmpaquito
Segun
https://stackoverflow.com/questions/420 ... racter-set hay q trabajar el ftp en modo binary. Sabe alguien como establecer el ftp en modo binary ?