Seleccionar página

Mover archivos al servidor usando Apex

Escrito por: Eddie Molina

Oracle ACE Pro. Oracle APEX Cloud Developer Certified Professional. Presidente de ORAUGCRC (Grupo de Usuarios Oracle de Costa Rica). Miembro de líderes de LAOUC. Conferencista, consultor, desarrollador y capacitador en tecnologías Oracle, especialmente Oracle Application Express con más de 30 años de experiencia.

24/04/2011

Copiar archivos al servidorDentro de las muchas consultas que me hacen, recibí una que me parece interesante de tratar aquí, y es ¿cómo se puede “subir” archivos al sistema de archivos del servidor?

El procedimiento requiere primeramente que creemos un directorio Oracle, que apunte a una ubicación física en el disco del servidor, por ejemplo “C:\Oracle\Archivos” si nuestro servidor es Windows, o bien, “/home/oracle/archivos” si el servidor es Unix/Linux.

Para crear el directorio utilizamos la sentencia:

En Windows:

create directory MisArchivos as ‘C:\Oracle\Archivos’;

En Unix/Linux:

create directory MisArchivos as ‘/home/oracle/archivos’;

Luego debemos asignar los permisos pertinentes al nuevo directorio creado:

grant read, write on directory MisArchivos to mi_usuario;

donde “mi_usuario” corresponde al usuario con los permisos para leer o escribir en el directorio que creamos.

Si no tienes los permisos necesarios para ejecutar las tareas anteriores, debes solicitar a tu DBA que lo haga por tí.

La segunda parte del procedimiento, está relacionado con Apex y lo que debes hacer es:

    1. Crear una nueva página en blanco, en la aplicación en la que quieres habilitar esta funcionalidad. Supongamos que es la página 35.
    2. Crea una región tipo HTML dentro de la nueva página creada en el punto anterior.
    3. En el encabezado de la región, agregar el siguiente código:

<script>
function f_AsignaNombre ()
{ $x(‘P35_ARCHIVO’).value = $x(‘P35_NOMBRE’).value}
</script>

    1. Ahora agrega un campo tipo “Exploración de Archivos”. Para el ejemplo lo vamos a nombrar “P35_ARCHIVO”.

Campo Exploración de Archivos

    1. Este campo debe ser del tipo de almacenamiento “Tabla wwv_flow_files”.

Tipo de Almacenamiento

    1. En el campo “Atributos de Elementos de Pantalla HTML” agregar el siguiente código:

onChange=”javascript:f_AsignaNombre()”;

    1. Ahora crea un campo del tipo “Oculto” y llámalo: “P35_NOMBRE”.
    2. Crea otro campo “Oculto” al que llamarás: “P35_ARCHIVO_ID”.
    3. El paso siguiente es crear un botón, con el cual vamos a ejecutar el procedimiento, le puedes poner el nombre que quieras, como valor a mostrar puedes ponerle “Cargar”.
    4. Crea una Validación a nivel de elemento para el campo P35_ARCHIVO

Validación de Elemento

    1. Selecciona el tipo “Elemento No Nulo”

Elemento no nulo

    1. Finalice el ayudante para agregar la validación.
    2. Ahora cree un Proceso de Página que se ejecute al hacer clic en el botón “”Cargar” creado en el paso 9, después de cálculos y validaciones y que contenga el siguiente código:

if :P35_ARCHIVO is not null then

select id
into :P35_ARCHIVO_ID
from wwv_flow_files
where name = :P35_NOMBRE;
carga_blob_a_bfile(&P35_ARCHIVO_ID,’MisArchivos’);

delete from wwv_flow_files
where id = :P35_ARCHIVO_ID;

end if;

    1. El código del procedimiento utilizado en el código anterior lo puedes descargar de aquí. Para no tener problemas al crear este procedimiento, debe tener permisos de lectura sobre la tabla WWV_FLOW_FILES.
    2. Cree un sinónimo público para el procedimiento “carga_blob_a_bfile”.

create public synonym carga_blob_a_bfile for esquema.carga_blob_a_bfile;

    1. De permisos de ejecución sobre el objeto “carga_blob_a_bfile” al usuario PUBLIC.

grant execute on carga_blob_a_bfile to public;

Y eso es todo, ahora debería poder “subir” archivos al directorio “MisArchivos” dentro de su servidor.

Espero que les sea de utilidad.

También te puede gustar…

Alcance de Acciones Dinámicas

Alcance de Acciones Dinámicas

Las acciones dinámicas son una de las características más importantes de APEX, puesto que nos permiten extender...

Share This