oFtp:Directory() devuelve nombres erroneos

oFtp:Directory() devuelve nombres erroneos

Postby hmpaquito » Mon Jun 11, 2018 4:58 pm

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
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: oFtp:Directory() devuelve nombres erroneos

Postby karinha » Mon Jun 11, 2018 6:37 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: oFtp:Directory() devuelve nombres erroneos

Postby hmpaquito » Tue Jun 12, 2018 3:53 pm

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.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: oFtp:Directory() devuelve nombres erroneos

Postby Carlos Mora » Wed Jun 13, 2018 6:00 pm

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
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
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: oFtp:Directory() devuelve nombres erroneos

Postby hmpaquito » Thu Jun 14, 2018 7:19 am

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.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: oFtp:Directory() devuelve nombres erroneos

Postby hmpaquito » Fri Jun 22, 2018 10:41 am

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 ?
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: oFtp:Directory() devuelve nombres erroneos

Postby cnavarro » Fri Jun 22, 2018 10:51 am

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  RUN


  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
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: oFtp:Directory() devuelve nombres erroneos

Postby hmpaquito » Fri Jun 22, 2018 11:16 am

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
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: oFtp:Directory() devuelve nombres erroneos

Postby cnavarro » Fri Jun 22, 2018 11:57 am

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
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: oFtp:Directory() devuelve nombres erroneos

Postby hmpaquito » Fri Jun 22, 2018 12:03 pm

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.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: oFtp:Directory() devuelve nombres erroneos

Postby hmpaquito » Fri Jun 22, 2018 2:16 pm

Traigo un ejemplo del array que devuelve el metodo oFtp:Directory() (está todo pasado a cadena)

Code: Select all  Expand view  RUN
{ [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.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: oFtp:Directory() devuelve nombres erroneos

Postby hmpaquito » Fri Jun 22, 2018 8:54 pm

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  RUN
//-------------------------------------------------------------------------//
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
*
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: oFtp:Directory() devuelve nombres erroneos

Postby hmpaquito » Sat Jun 23, 2018 2:04 pm

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 ?
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 45 guests