Menu Principal
. Inicio
. Acerca de Cobtools
. Sugerencias
. Recomiendanos
. Subscripcion
. Tu Menu

. Foros
. Downloads
. Publicaciones
. Comprar Licencia

 

Login
Nickname

Password

Si no tienes aun una cuenta, has click en: Usuario Nuevo.

Como usuario registrado podras enviar mensajes al foro, y escribir comentarios en el mismo.
 

Programas
. Cobview Free
. Cobview Print Suite
. Cobview Developer
. Diferencias

. CobHTTPD
. CobEMAIL
. CobEdit

 

BIENVENIDO AL CENTRO DE PUBLICACIONES

Categoria: 003 - COBHTTPD WEB SERVER
Prioridad ESCRITURA: Administrators LECTURA: Public Level

[ INDICE ]  [ VER TITULOS ] 

Titulo: :: Regresar archivos externos ::
Descripcion:
Sirve para entregar archivos que no son publicos, que no estan dentro de la carpeta httpdoc.
Primero, hay que tener cuidado en como entregamos estos archivos, nunca hay que entregar un archivo que sea pasado por parametro, es mejor validar antes de simplemente entregar el archivo.

Como pedir un archivo externo desde la web

Para pedir por ejemplo, desde el codigo HTML una imagen que no este publica, podemos hacer algo asi:

<  img src="/cobapp?proid=acucobol&prog=sendfile&func=LOGO" width="173" height="65"  >

Aqui dentro del html, estamos solicitando una imagen, pero el que nos entregara dicha imagen, es uno de nuestros programas COBOL dentro del proyecto.
En este ejemplo, estoy indicando que imagen deseo con el parmetro func=LOGO, bien podria ser el numero de cliente, ejemplo: cliente=1001&tipo=foto (del cliente 1001 quiero su foto de perfil).

Dentro del programa COBOL hay que validar por ejemplo, que dicho cliente exista, y que la variable tipo sea = "foto".

Lo que no debemos hacer, es por ejemplo, regresar el archivo indicado por la misma variable, ej:
cliente=1001&archivo=c:\fotos\foto1001.jpg

Estas son el tipo de cosas que se pueden aprovechar para obtener un archivo que es del sistema, o que incluso es del SO.

Como regresar el archivo desde COBOL

Una vez que ya sabemos como pedirlo desde el HTML, para regresar el archivo no publico podemos usar el siguiente codigo:

 IF FUNC = "LOGO"
      MOVE "C:\TEMP\LOGO.GIF" TO SENDFILE-PATH
      PERFORM TPL-SENDFILE.

Aqui basicamente hacemos dos cosas:
1.- movemos a la variable SENDFILE-PATH el nombre del archivo a regresar, con la ruta completa, es decir todas las carpetas y nombre de archivo.
2.- Ejecutamos el parrafo TPL-SENDFILE, este es el que realmente regresa a cobhttpd el nombre del archivo a entregar.

Hay que aclarar que si vamos a regresar un archivo en lugar de un template, entonces este seria el unico contenido que tendria nuestra salida, no indicariamos variables, memos o un template a usar.

Podemos regresar archivos de imagenes, archivos pdfs, documentos de excel, word, etc. Cualquier archivo que pueda ser enviado a traves de la web, y que no quisieramos que estuviera publico.

Si se tratara de un archivo que solo ciertos usuarios podrian visualizar previa autenticacion, entonces habria que validar la autenticacion antes de regresar el contenido del archivo.

Codigo de Variables y Parrafo

Las variables necesarias para esta funcion, estan declaradas en el archivo TEMPLATE.WSS

       01  SENDFILE-LINE.
           02 FILLER            PIC X(14) VALUE "<@ SENDFILE '".
           02 SENDFILE-PATH     PIC X(250).
           02 FILLER            PIC X(04) VALUE "' @>".

Basicamente es un registro que sera grabado en el archivo de salida hacia COBHTTPD.
Ahi vemos la variable SENDFILE-PATH donde indicamos la ruta completa hacia el archivo a regresar.
Y es lo unico que indicamos desde COBOL.

Ahora bien, la llamada al parrafo, es el que realmente graba dicho comando para COBHTTPD.
Este parrafo se encuentra en el archivo TEMPLATE.FDT

La version de COBHTTPD que tiene esta funcionalidad es la 4.91 en adelante.
Versiones anteriores aun no contaban con este metodo de regresar archivos que no esten publicos.








Copyright 1999-2011 COBTOOLS.COM
powred by COBCMS
Visitor No.: