Acceder a un archivo subido

Foros Néfele 4 Harbour Foros Dudas Acceder a un archivo subido

Etiquetado: 

  • Este debate tiene 46 respuestas, 6 mensajes y ha sido actualizado por última vez el 6 meses, 3 semanas por Avatardmillas. This post has been viewed 1702 times
Mostrando 42 respuestas a los debates
  • Autor
    Entradas
    • #757
      XeviXevi
      Participante

      Estoy intentando subir un archivo con WFileOpenDlg, y veo que lo sube y aloja en la carpeta cgi-bin/tmp
      Bien hasta ahí, pero ¿como accedo a ese fichero.???

      He subido un fichero excel, y lo veo correctamente en esa carpeta, ahora bien intento de ir a "abrirlo" y no me deja...

      Error en Excel... DISP_E_EXCEPTION

      Un Saludo,

      Xevi

       

       

      Loading spinner
      • Este debate fue modificado 4 años, 2 meses por Alfredo SanzAlfredo Sanz.
    • #759
      Avatarquim
      Participante

      Xevi

      Estás intentando que el CGI te abra un excel ?

      El CGI sólo puede devolver 'datos', es decir, html, json, xml,...

      Saludos

      Quim

      Loading spinner
    • #761
      XeviXevi
      Participante

      Quim,

      Estoy tratando de "subir" primero un archivo y una vez alojado en el servidor, ya que lo aloja en la carpeta cgi-bin/tmp, procesarlo-abrirlo-leerlo... no se si hago alguna "estupidez", pero imagina una imagen jpg,bmp... qué harias con el fichero subido-recibido al servidor, mostrar-procesar-ver... pues de eso se trata que podamos subir archivos al server, no???

      Una vez leido el arcchivo SI que voy a devolver datos y mostrarlos en una página, pero necesito poder "procesar-tratar" los datos de ese archivo subido

      De hecho, lo planteo así, porque las pruebas que hice con mod_harbour, funcionaba de esta manera (igualita que con harbour).
      Se trata de subir, leer-tratar datos y devolver datos para mostrar en una página.

      No pretendo abrir Excel, sinó que aprovechar el ActiveObject dentro de las posibilidades de abrir documento, leer/modificar celdas, capturar datos y finalmente mostrar datos en una página web.

       

      Gracias por vuestro tiempo.

       

      Un Saludo,

      Xevi.

       

      Loading spinner
      • Esta respuesta fue modificada 4 años, 2 meses por XeviXevi.
      • Esta respuesta fue modificada 4 años, 2 meses por XeviXevi.
      • Esta respuesta fue modificada 4 años, 2 meses por XeviXevi.
    • #765
      XeviXevi
      Participante

      Sigo con este tema...

      Bien, por lo visto, acceder con FOpen(), MemoRead()...

      FOpen( "C:\Apache24\cgi-bin\tmp/" + oCGI:GetCgiFile("fitxerxls") )

      MemoRead( "C:\Apache24\cgi-bin\tmp/" + oCGI:GetCgiFile("fitxerxls") )

      No da problemas y puedo abrir el archivo...

       

      ahora bien, no se que puede ocurrir, cuando

      oExcel := GetActiveObject( "Excel.Application" )

      no se queja, que no pueda hacer un
      oExcel:WorkBooks():Open( "C:/Apache24/cgi-bin/tmp/" + oCGI:GetCgiFile("fitxerxls") )

       

      Pues no se como poder leer archivos excel si no tiro de ese componente.
      Para crear un archivo excel, tengo la clase TFileXls de Ramon Avendaño, pero no para lectura/modificación de un excel...

       

      Un Saludo,

      Xevi

      Loading spinner
    • #766
      XeviXevi
      Participante

      Por más vueltas que le doy, no logro entender...
      Realmente, lo que está funcionando es un exe Xailer+harbour+Mingw que lo que hace es procesar datos y crear un archivo html para mostrar datos

      Bien, o sea que TODO lo que no es "visual" debe de funcionar igual, entendí.

      Lo único que estoy haciendo, es en un momento dado, abrir un documento, no muestro NADA, miro que "hojas" tiene ese archivo excel para cargarlos en un array, cerrar el documento y luego ese array es el que enviaré a mostrar en una página.

       

      Simplemente, de momento eso. Pues no me funciona.

       

      Un Saludo,

      Xevi.

       

       

       

      Loading spinner
    • #768
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Xevi:

      Prueba a copiarlo a otra carpeta fuera de apache24. En algunos casos hemos tenido problemas con los permisos que otorga apache dentro de cgi-bin.

       

      Recuerdo que algún compañero nos ha comentado que ha leído correctamente, creo que ficheros word.

      Mañana se lo comento y que nos cuente.

      Loading spinner
    • #772
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Loading spinner
    • #778
      XeviXevi
      Participante

      Pues alguna cosa ocurre con la versión que tengo de Néfele!!!

      En un proyecxto de Xailer...

      Está funcionando correctamente y visualizo los valores de las celdas 1 de la hoja1

      Ahora bien, en un proyecto NéfeleXailer

      Da error al legar a Open()

       

      Gracias por vuestro tiempo.

       

      Un Saludo,

      Xevi.

       

       

      Loading spinner
    • #786
      Pedro AmaroPedro Amaro
      Superadministrador

      Buenas tardes Xevi;

      No se si será este el problema que tienes, pero se parece mucho a lo que tuvimos cuando implementamos ADO en Néfele, y al uso de otros servicios OLE, el hecho de que Fredy no tenga problema me da pistas de que puede ser así.

      Añade en httpd.conf las siguientes lineas y reinicia el Apache

      Solemos ponerlo justo debajo de

      El problema parece ser porque OLE no consigue saber donde encontrar sus componentes cuando es ejecutado desde Apache, no sabemos si es por que es un servicio.

      Pruebalo y nos cuentas

       

       

      Loading spinner
    • #787
      XeviXevi
      Participante

      Resulta, que mirando el httpd.conf, esas líneas ya estan en el fichero...

      supongo que al instalar NefeleWizard se encarga...

      Así es como lo tengo... y no me funciona.

       

      Gracias por vuestro tiempo.

      Estaria de bien que lo probara algun otro usuario...

      Yo lo voy a probar en otra PC, a ver que tal.

      (editado)... probado en una segunda PC, y tampoco me funciona, el mismo error.

       

      De hecho, el servidor que tenia probando mod_harbour, el httpd.conf no tenia esas variables SetEnv y me funcionaba el objeto "Excel.Application"

       

       

      Un Saludo,

      Xevi.

       

       

      Loading spinner
      • Esta respuesta fue modificada 4 años, 2 meses por XeviXevi.
      • Esta respuesta fue modificada 4 años, 2 meses por XeviXevi.
    • #791
      Pedro AmaroPedro Amaro
      Superadministrador

      Efectivamente, el NefeleWizard añade esas líneas en el hhtpd.conf.

      Pues tendremos que ver por que le funciona a Fredy, yo no utilizo Office así que o puedo probarlo.

      Un Saludo

      Loading spinner
    • #792
      XeviXevi
      Participante

      Por lo que voy probando, y si puedo ayudar en alguna prueba me pongo a vuestra disposición...

       

      El problema no está en OLE - Office, ya que lo carga correctamente con CreateObject()

      El problema lo está dando al "acceder" al ficherete.  Al momento del Open()

      He probado de cambiar la ruta del fichero o quitar/eliminar/renombrar el fichero, y Open() da el mensaje de que no encuentra el fichero, que es un mensaje correcto. En el caso que el fichero exista es cuando da el error de no poder acceder a él.

       

      Gracias por vuestro tiempo.

       

      Un Saludo,

      Xevi.

      Loading spinner
      • Esta respuesta fue modificada 4 años, 1 mes por XeviXevi.
      Adjuntos:
      Debes acceder para ver los archivos adjuntos.
    • #795
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Xevi,

      Adjunta el projecto y el xls y lo pruebo en mi servidor

      Loading spinner
    • #797
      XeviXevi
      Participante

      Adjunto zip con el proyecto y el xlsx que lo ubico en C:\prova

       

      Loading spinner
      Adjuntos:
      Debes acceder para ver los archivos adjuntos.
    • #810
      XeviXevi
      Participante

      Se me dio por probar con Apache que tengo funcionando con mi Server con mod_harbour

      El mismo exe que construye Nefele+Xailer lo coloco en cgi-bin de ese Server y funciona!!!
      Abre correctamente el fichero con oExcel:WorkBooks():Open(cFileXLS)

       

      O sea, que se trata de alguna configuración del Apache24 que tengo instalado para Néfele.

      Seguro que eso os puede ayudar en algo para "localizar" que puede estar pasando, pero por lo visto se trata de accesos/permisos, no se, yo no entiendo.

       

      De momento, puedo proseguir mis pruebas testeando con ese Apache.

       

      Gracias por vuestro tiempo.

       

      Un Saludo,

      Xevi.

      Loading spinner
    • #811
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Bueno, algo es algo 🙂

      He probado tu ejemplo en mi servidor y también funciona.

      Vamos a hacer una cosa:

      Mándame el httpd.conf del servidor donde no funciona y lo comparo con el mío.

      Dime también el apache que usas (xampp,wampp,etc..)

      Casi seguro que es alguna opción de seguridad de apache que te está enjaulando el cgi y te impide el acceso a ficheros.

      Créate un fichero txt en la misma carpeta que tienes el xls y prueba a ver si lo puedes abrir desde néfele

      Con :AddHtml puedes inyectar código html a tu página, por ejemplo

       

      Loading spinner
    • #812
      XeviXevi
      Participante

      Ahora... otro tema por lo que concierne al mismo tema, la subida de fichero, al menos en este caso que estoy probando (fichero excel) no termina de funcionar correctamente, pues el fichero original y el recibido en la carpeta cgi-bin/tmp no son "iguales"

      Si intento abrir el fichero recibido con excel, encuentra un error y excel informa y "repara"... cosa que no me sirve, pues debo tratar ese archivo sin abrir excel, sinó SOLO utilizando el objeto "Excel.Application"

       

      Comparando los dos archivos, el de origen i el tmp, (con Winmerge), veo que el fichero tmp le añade un bit más al final del fichero.

      Ese es el problema, si le quito ese caracter final [1A] los dos archivos son idénticos.

       

      Un Saludo,

      Xevi.

      Loading spinner
      Adjuntos:
      Debes acceder para ver los archivos adjuntos.
    • #814
      XeviXevi
      Participante

      Fredy,

      Si, puedo abrir/leer perfectamente un fichero con Néfele

      He creado un fichero txt y me lo mustra como bien me has puesto como ejemplo.

       

      Te adjunto el httpd.conf del servidor Apache24 sin utilizar xampp y que es el que da el error al abrir el archivo excel

       

      Un Saludo,

      Xevi.

      Loading spinner
      • Esta respuesta fue modificada 4 años, 1 mes por XeviXevi.
      Adjuntos:
      Debes acceder para ver los archivos adjuntos.
      • #818
        Alfredo SanzAlfredo Sanz
        Superadministrador

        Ne ha enviado bien el http.conf

        Comprime el fichero en un zip o si lo prefieres mándamelo a hola@nefele.dev

        Loading spinner
        • #819
          XeviXevi
          Participante

          Visto, y lo he zipeado!!!

          Loading spinner
    • #815
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Ok. Vamos a revisarlo. Ese es el carácter de final de fichero (^z) que el memowrit de clipper se empeña en poner al final.

      Loading spinner
      • #820
        Avatarquim
        Participante

        Fredy

         

        Utiliza mejor hb_memowrit() que puedes controlar caracter final de fichero

        https://vivaclipper.wordpress.com/2014/01/16/hb_memowrit/

        Saludos

        Loading spinner
      • #859
        XeviXevi
        Participante

        De momento... y hasta que no salga una actualización con esto me apaño...

        Me hago una copia sin el último caracter en la carpeta tmp (que curiosamente, es C:\xampp\tmp, windows tiene su tmp y Apache la suya, curioso, pero lógico, claro!!!)

         

        Un saludo,

        Xevi.

        Loading spinner
    • #836
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Xevi, lo he probado con tu httpd.conf  y también me funciona .

      El apache que me dices que funciona está en el mismo ordenador?

      Solo se me ocurre que pueda ser algo relacionado con el antivirus o el firewall. Prueba a desactivar todo a ver.

      Loading spinner
    • #837
      XeviXevi
      Participante

      Fredy,

       

      Apache24 en C:\Apache24    -> falla

      Apache24 con xampp en C:\xampp    ->  funciona correctamente

       

      sobre la misma PC (bien, en dos PCs con mismo comportamiento)
      Windows 10 Enterprise LTSC, Office2019

      Paro un Apache y cambio de Apache, deteniendo servicio y volviendo a arrancar... SIEMPRE el mismo comportamiento

       

      Un Saludo,

      Xevi.

       

      Loading spinner
    • #840
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Lo cierto es que es muy raro. ¿tal vez porque tengas cosas en 32 bits y otras en 64 bits?

      Mándame por wetransfer la carpeta apache24 completa, que la pondré en el mío a ver qué me dice

      Loading spinner
    • #841
      XeviXevi
      Participante

      Enviado enlace wetransfer a hola@nefele.dev

      Office2019 es 32 bits, todo lo demás 64bits

      Loading spinner
      • Esta respuesta fue modificada 4 años, 1 mes por XeviXevi.
    • #845
      Alfredo SanzAlfredo Sanz
      Superadministrador

      He instalado la copia de tu apache

      El exe que yo tenía, el que solo lee el excel de c:\prova funciona correctamente

       

      El exe que me has mandado por wetransfer me da este error

      sin el código fuente no sé decirte si la línea 150 es antes o después de leer el fichero xls. Ya me dirás

      Loading spinner
    • #846
      XeviXevi
      Participante

      el código fuente ha cambiado mucho desde que te lo envié y no sabria decirte...

       

      Te he pasado el proyecto más sencillo, mas pequeño... el exe que me genera a mi NefeleXailer y el fichero xls

       

      Un Saludo,

      Xevi

       

      Loading spinner
    • #852
      Alfredo SanzAlfredo Sanz
      Superadministrador

      jeje, déjame hacer un poco de publicidad:
      Bueno es lo que tiene utilizar un sistema tan potente  como néfele, que en  4 días haces tanto que ya no se parecen en nada

      Bueno, he cargado tu apache con el exe que me has mandado, y pásmate, funciona

       

      Lo cierto es que es algo muy extraño. Seguiré investigando a ver si encuentro alguna explicación

      Loading spinner
    • #913
      XeviXevi
      Participante

      Bien, voy haciendo pruebas y me voy topando con comportamiento distinto en momento de acceder a archivos físicos de mi PC o red... en Apache, dependiendo si éste es con xampp o no.

      File( "\\Server10\c\Xailer\Bin\Xailer.exe" )   ->  .T.  en c:\xampp     .F. en c:\Apache24

      oExcel:WorkBooks():Open( "c:\prova\prova.xlsx" )  ->  .T.  en c:\xampp     .F. en c:\Apache24

       

      Voy a instalar una VM con VirtualBox, de cero, con windows10 (no enterprise) y primero a ver si me funciona File( "\\Server10\c\Xailer\Bin\Xailer.exe" )... si eso, luego ya a ver instalo Office2019, y a ver donde llego.

       

      Un Saludo,

      Xevi.

       

       

       

      Loading spinner
    • #914
      XeviXevi
      Participante

      Pues NO... Apache sigue sin funcionarme lo de acceder a algunos archivos fuera de htdocs

      He instalado una VM con Windows10 pro

      He copiado la carpeta Apache y he iniciado el servidor
      C:\Apache24\bin\httpd -k install
      net start Apache2.4

      Me ha dado primero error que faltaba vcruntime140.dll y no se poodia arrancar Apache.

      Lo he descargado de https://es.dll-files.com/vcruntime140.dll.html y copyado en C:\Windows\System32 y en C:\Windows\SysWOW64

      luego me ha dejado arrancar correctamente Apache.

      funciona localhost

      funciona localhost/cgi-bin/provanefele.exe

      Pero...

      File( "\\Server10\c\Xailer\Bin\Xailer.exe" ) sigue devolviendo .F.

       

      No se que más probar!!!

      Loading spinner
      • Esta respuesta fue modificada 4 años, 1 mes por XeviXevi.
    • #916
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Ok. mantenos informados de tus avances

      Loading spinner
    • #917
      Pedro AmaroPedro Amaro
      Superadministrador

      He probado con Apache a buscar un fichero ubicado en un NAS, en una carpeta publica que no requiere autentificación y he puesto esto para verlo.

      Y me da .T. que es lo correcto.

      No se si el problema que tienes es porque el recurso compartido al que estas accediendo necesita autentificación, y al intentar acceder con Apache como servicio se autentifica con el usuario asignado en la definición del servicio y no lo reconoce como en servidor del recurso.

      Xamp abre Apache como programa por lo que se autentifica con el usuario local y cualquier otro permiso que tenga asignado.

      Loading spinner
    • #919
      XeviXevi
      Participante

      a ver si puede servir de algo, al menos ahora tengo Apache (sin xampp) funcionando.

      El caso...

      Si arranco Apache desde C:\Apache24\bin haciendo doble click en httpd.exe, quedándose y dejando la ventana msdos abierta, me está funcionando TODO correctamente

      File( "\\Server10\c\Xailer\Bin\Xailer.exe" )   ->  .T.

      oExcel:WorkBooks():Open( "c:\prova\prova.xlsx" )  ->  .T.

       

      Ahora viene donde no me funciona... cuando tengo Apache como servicio... ejecutando como administrador un bat con:

      C:\Apache24\bin\httpd -k install
      net start Apache2.4

       

      File( "\\Server10\c\Xailer\Bin\Xailer.exe" )   ->  .F.

      oExcel:WorkBooks():Open( "c:\prova\prova.xlsx" )  ->  .F.

       

      No se que hará/hace xampp, arrancando con xamp-control.exe, alguna cosa debe hacer, peró ahí a mi se me escapa.

       

      De momento, puedo tener esa ventanita de msdos abirta, la minimizo y ya está, pero creo que debe tener alguna solución.

       

      Ahí voy haciendo mis pruebas... en un segundo Server, que a veces tengo conectado o no, por si alguien quiere chafardear.

      http://xevicomas.duckdns.org:8069/cgi-bin/provanefele.exe

       

       

      Un Saludo,

      Xevi.

       

       

      Loading spinner
      • Esta respuesta fue modificada 4 años, 1 mes por XeviXevi.
      • Esta respuesta fue modificada 4 años, 1 mes por XeviXevi.
    • #926
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Parece que es un problema de permisos de windows

      mira en servicios como tienes el apache

      en lugar de la cuenta del sistema elige la opción "esta cuenta" y dale las credenciales del usuario con el que te está funcionando.

       

      Reinicia apache y... que Dios reparta suerte!!

       

      Ya me contarás

      Loading spinner
    • #927
      XeviXevi
      Participante

      Cambiado, reiniciado el servicio... y FUN CIO NA !!!

      (editado)

      Bien... funciona File( "\\Server10\c\Xailer\Bin\Xailer.exe" )

       

      Pero... oExcel:WorkBooks():Open( cFileXLS )   sigue fallando

       

       

      Gracias por tu tiempo.

       

       

      Un Saludo,

      Xevi.

      Loading spinner
      • Esta respuesta fue modificada 4 años, 1 mes por XeviXevi.
    • #1676
      XeviXevi
      Participante

      Retomando este hilo...

       

      Hace unos días que estoy apartado de mis prubas, y veo que en alguna actualización, algo ha variado al "subir" un fichero.

       

      El tema por lo que concierne a la subida de fichero, al menos en este caso que estoy probando (fichero excel) no termina de funcionar correctamente, pues el fichero original y el recibido en la carpeta cgi-bin/tmp no son "iguales"

      Si intento abrir el fichero recibido con excel, encuentra un error y excel informa y "repara"... cosa que no me sirve, pues debo tratar ese archivo sin abrir excel, sinó SOLO utilizando el objeto "Excel.Application"

       

      Comparando los dos archivos, el de origen i el tmp, (con Winmerge), veo que el fichero tmp le añade un retorno de carro al final del fichero.

      Anteriormente se le añadía un caracter 1A, pero por lo visto, ahora se le añade ese caracter de retorno de carro

       

      EDITADO ***

      Más concretamente, se añaden, actualmente, 2 carácteres de más, Chr(13) y Chr(10). De momento "reescribo" el archivo quitando 2 bytes, y funciona.

       

       

       

       

      Un Saludo,

      Xevi.

      Loading spinner
      • Esta respuesta fue modificada 3 años, 10 meses por XeviXevi.
    • #1678
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Vamos a mirarlo y te cuento.

      Feliz año!

      Loading spinner
    • #2204
      Avatardmillas
      Participante

      Hola a todos.

      He probado este ejemplo para ver como podia obtener algún dato de una hoja de calculo y  me sale el siguiente error.

      Podria estar relacionado con la versión de excel que tengo instalada Office 365??

      Loading spinner
    • #2205
      Pedro AmaroPedro Amaro
      Superadministrador

      ¿Has probado a colocar el archivo en una carpeta dentro de Apache, por ejemplo en cgi-bin\tmp?

      Loading spinner
    • #2206
      Avatardmillas
      Participante

      Hola,

      lo he probado con esta ruta y sale el mismo error.

      cFileXLS := "c:\apache24\cgi-bin\tmp\prueba.xlsx"

      Loading spinner
    • #2208
      Pedro AmaroPedro Amaro
      Superadministrador

      Prueba a abrirlo con un proyecto de Xailer, para intentar acotar un poco el error.

      Loading spinner
    • #2209
      Avatardmillas
      Participante

      Hola, gracias por la ayuda.

      En un proyecto Xailer si que me abre el fichero xlsx y me coge el valor de la celda que le indico, en Nefele falla al abrir el excel.

       

      TRY
      oExcel := GetActiveObject( "Excel.Application" )
      CATCH
      TRY
      oExcel := CreateObject( "Excel.Application" )
      CATCH
      MsgInfo( "Excel no disponible. [" + Ole2TxtError() + "]" )
      RETURN .F.
      END
      END

      oExcel:WorkBooks:Open( "C:\Apache24\cgi-bin\tmp\prueba.xlsx")
      oPage := oExcel:WorkSheets( 1 )
      MsgStop(oExcel:Cells( 1,1 ):Value)

      Loading spinner
    • #2210
      Avatardmillas
      Participante

      El servidor que uso no es https:/ pero tampoco funciona en localhost.

      No sé si eso tendrá algo que ver, en proyecto Xailer funciona todo perfecto.

       

      Loading spinner
    • #2235
      Avatardmillas
      Participante

      Hola.

      Sigo dandole vueltas a la apertura y obtencion de datos de un excel en Nefele.

      En Xailer si excel esta abierto no pasa al CreateObject( "Excel.Application" ) pues ya esta abierto.

       

      En Nefele siempre pasa al CreateObject( "Excel.Application" ) este abierto excel o no.

      He probando indicado la direccion IP CreateObject( "Excel.Application" ,"direccion ip") pero siempre da fallo al oExcel:WorkBooks:Open(cFileXLS)

      Sabriais indicarme que hago mal, se supone que la parte que no sea visual de xailer tendria que funcionar en nefele.

       

      Muchas gracias

      Loading spinner
    • #2236
      Avatardmillas
      Participante

      Hola.

      He probado lo que indicaba Xevi y funciona correctamente, lo unico que hay que dejar la ventana negra abierta y no arracar como servicio.

      "Si arranco Apache desde C:\Apache24\bin haciendo doble click en httpd.exe, quedándose y dejando la ventana msdos abierta, me está funcionando TODO correctamente"

       

      Gracias

      Loading spinner
Mostrando 42 respuestas a los debates
  • Debes estar registrado para responder a este debate.

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para «permitir cookies» y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en «Aceptar» estarás dando tu consentimiento a esto.

Cerrar