oFtp:Directory() devuelve nombres erroneos
oFtp:Directory() devuelve nombres erroneos
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
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
- karinha
- Posts: 7935
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Re: oFtp:Directory() devuelve nombres erroneos
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Re: oFtp:Directory() devuelve nombres erroneos
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.
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.
-
- Posts: 989
- Joined: Thu Nov 24, 2005 3:01 pm
- Location: Madrid, España
Re: oFtp:Directory() devuelve nombres erroneos
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
¿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
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Re: oFtp:Directory() devuelve nombres erroneos
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.
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
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:directory
Lo 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/26101338
La pregunta seria: ¿ Como mandar al ftp el comando OPTS UTF8 OFF ?
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:directory
Lo 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/26101338
La pregunta seria: ¿ Como mandar al ftp el comando OPTS UTF8 OFF ?
Re: oFtp:Directory() devuelve nombres erroneos
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
Si no es asi, deberías probar activando el UTF8, quiero decir en el proceso que utiliza FTP
Code: Select all | Expand
local cOldCode := HB_SETCODEPAGE( "UTF8" )
//local lUni := FW_SetUnicode( .T. )
.../..
HB_SETCODEPAGE( cOldCode )
//FW_SetUnicode( lUni )
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Re: oFtp:Directory() devuelve nombres erroneos
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
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
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
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Re: oFtp:Directory() devuelve nombres erroneos
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.
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
Traigo un ejemplo del array que devuelve el metodo oFtp:Directory() (está todo pasado a cadena)
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.
Code: Select all | Expand
{ [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
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
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
//-------------------------------------------------------------------------//
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
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 ?