2017-10-19 6 views
0

Ce lien explique comment afficher une image d'un blob dans une table, à une image d'affichage élément http://www.apexninjas.com/blog/2011/09/uploading-and-displaying-images-in-apex/Où dans l'interface Oracle APEX j'ai mis ce code?

Il conseille d'écrire ce code (le code convertit les données BLOB en HTML):

create or replace PROCEDURE image(image_id IN NUMBER) 
AS 
l_mime  VARCHAR2 (255); 
l_length  NUMBER; 
l_file_name VARCHAR2 (2000); 
lob_loc  BLOB; 

BEGIN 
     SELECT i.MIME_TYPE, i.CONTENT, DBMS_LOB.getlength (i.CONTENT), i.FILENAME 
     INTO l_mime, lob_loc, l_length, l_file_name 
     FROM EMP_IMAGE i 
     WHERE i.ID = image_id; 

     OWA_UTIL.mime_header (NVL (l_mime, 'application/octet'), FALSE); 
     htp.p('Content-length: ' || l_length); 
     htp.p('Content-Disposition: filename="' || SUBSTR(l_file_name, INSTR(l_file_name, '/') + 1) || '"'); 
     owa_util.http_header_close; 
     wpg_docload.download_file(Lob_loc); 
END image; 

Je suis nouveau à Oracle APEX 5, et je ne comprends pas dans l'interface dois-je écrire que le code

Mes loos UI comme ce https://i.imgur.com/7xCRO7U.png

Répondre

1

Ils vous disent de créer cette procédure dans la base de données; Ce n'est pas un composant APEX. Je ne pense pas que je recommanderais leur approche d'ouvrir un trou de sécurité pour permettre l'exécution directe d'une procédure locale personnalisée. Et ce n'est plus nécessaire; APEX a beaucoup changé depuis 2011.

Sur la gauche, cliquez sur votre élément d'affichage nommé "IMAGE". Puis sur la droite, sous "Paramètres", modifiez le "Basé sur" à colonne BLOB retournée par une instruction SQL, et juste mettre une requête là-bas qui va retourner la colonne que vous voulez.

Vous aurez besoin d'une clé primaire pour trouver la bonne ligne; ici, je suppose que vous utilisez l'élément de page FILE_NAME, mais probablement une meilleure option serait d'avoir un élément de page caché pour contenir la clé primaire de votre table IMAGES, peut-être appelé "P1_ID" pour une colonne "id", et ajoutez RETURNING id INTO :P1_ID à la fin de votre instruction INSERT dans votre processus de page. Votre requête d'élément de page "IMAGE" ressemblera à quelque chose comme:

SELECT i.CONTENT 
    FROM IMAGES i 
    WHERE i.ID = :P1_ID; 
+0

Le problème avec "BLOB Column retourné par une instruction SQL" est qu'il ne peut pas être mis à jour dynamiquement. Il ne charge qu'une seule fois, et pas même une actualisation. Une action dynamique ou une valeur définie peut modifier l'image affichée. – bewe

+0

J'ai besoin de mettre à jour les images par programmation – bewe