Vous êtes sur la page 1sur 15

Oracle Application Express Application Builder User's Guide Release 4.

2 - E35125-05

http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/advnc_blob.htm#HTMDB25911

Le Support BLOB dans les Forms et Reports


Oracle Application Express inclut le support dclaratif BLOB pour
permettre aux dveloppeurs de charger des fichiers dans des forms et
dcharger ou afficher les fichiers dans les reports. L'affichage des BLOB et
le dchargement peut aussi tre fait par programmation en PL/SQL.
Cette section dcrit comment charger, dcharger et afficher des fichiers
et comment grer les attributs complmentaires pour les fichiers comme
le type MIME et le nom du fichier qui sont importants pour la bonne
gestion des fichiers stocks dans des colonnes BLOB. Grce cette
fonctionnalit, vous pourrez facilement personnaliser vos applications
Oracle Application Express pour grer des fichiers comme les images,
documents, vidos, etc.

Sommaire :
Les BLOB dans les forms
Le support BLOB dans les reports
Travailler avec les BLOB par programmation
Exemple d'application avec form et report affichant des images

1.1 Les BLOB dans les Forms


Si vous crez un Form (avec l'assistant Create Application Wizard,
create page de type Form - ou Report and Form, ou create region de
type Form) ou ajoutez un item un form, l'item dont la source est une
colonne database de type BLOB est cr comme un item de type File
Browse. Quand le form est invoqu pour un INSERT, le fichier slectionn
par l'utilisateur est charg dans la colonne BLOB. Quand le form est
appel pour un update, un lien download est affich droite du bouton
Browse. Les utilisateurs peuvent cliquer sur ce lien pour tlcharger le
fichier en local.
1.1.1 Charger et dcharger des fichiers dans un BLOB
Le support BLOB ne donne pas toutes les informations dont une
application a besoin pour grer efficacement un BLOB. En plus de savoir
que la colonne est un BLOB, des informations sur le fichier fournissent une

meilleure pratique pour l'utilisateur final. L'item de page File Browse a du


paramtrage supplmentaire pour faciliter la gestion des informations
supplmentaires de manire dclarative.
Il existe deux types diffrents de stockage disponible avec le type d'item
File Browse :
BLOB column specified in Item Source Attribute
1
Daphn Nougier - 12/11/2014

Oracle Application Express Application Builder User's Guide Release 4.2 - E35125-05

http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/advnc_blob.htm#HTMDB25911

approche compltement dclarative qui permet la configuration des


attributs supplmentaires. Il rfrence un BLOB d'une table
database.
La Table WWV_FLOW_FILES

est disponible et conserve pour compatibilit antrieure. A ne plus


utiliser pour les nouvelles applications.
Afin de fournir des informations supplmentaires, il est recommand
d'ajouter des colonnes en plus la table database pour stocker et tracer
le MIME type, le nom du fichier, la date de dernire mise jour et le jeu
de caractre. Vous pouvez le faire de cette manire, par exemple :
ALTER TABLE emp ADD
(ATTACH_MIMETYPE VARCHAR2(255),
ATTACH_FILENAME VARCHAR2(255),
ATTACH_LAST_UPDATE DATE,
ATTACH_CHARSET VARCHAR2(128));

Note:
Le jeu de caractres du BLOB n'est pas automatiquement dfini au
chargement. Pour stocker le jeu de caractre du BLOB, vous devez fournir un
item de page supplmentaire sur votre page associe la colonne utilise
pour stocker le jeu de caractres pour le document qui est tlcharg.

Si vous crez manuellement un form sur une table personnalise, vous


pouvez bnficier de cette fonctionnalit. Pour cela utilisez le type d'item
File Browse avec un paramtrage Storage Type BLOB column
specified in Item Source Attribute, sur une page avec un type de
processus DML DML_PROCESS_ROW. Ce processus dtermine le nom de la
table et les colonnes cl primaire.
Exemple de table :

2
Daphn Nougier - 12/11/2014

Oracle Application Express Application Builder User's Guide Release 4.2 - E35125-05

http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/advnc_blob.htm#HTMDB25911

1.1.2 Afficher le BLOB

Si le BLOB concern est une image, vous pouvez l'afficher dans le form.
Vous pouvez utiliser le type d'item Display Image pour la grer de
manire dclarative. .
1.1.3 Supprimer la rfrence l'Image
Comme il n'y a pas de remise NULL avec File Browse, si vous voulez

fournir un mcanisme pour supprimer la rfrence l'image, vous devez


inclure un bouton pour supprimer l'image pour mettre null les colonnes
ncessaires. Par exemple :
UPDATE demo_product_info
SET product_image = NULL,
MIMETYPE = NULL,
FILENAME = NULL,
IMAGE_LAST_UPDATE = NULL,
CHARSET = NULL
WHERE product_id = :P6_PRODUCT_ID;

1.2 Support BLOB dans les Reports


Oracle Application Express inclut le support BLOB pour les reports
classiques et interactifs. Si vous utilisez un assistant pour crer un report
et inclure une colonne de type BLOB, le support basique est inclus. Des
informations supplmentaires doivent tre ajoutes aprs la gnration
pour adapter de manire plus conviviale la fonction de tlchargement.
1.2.1 Fournir un lien Download

Pour faciliter l'intgration d'un lien download dans un tat, le report doit
inclure la slection de la longueur du BLOB (par exemple,
dbms_lob.getlength(RESUME)). Si la longueur est de 0, le BLOB est NULL et
aucun lien download n'est affich. De la mme manire, comme vous
spcifiez un format masque pour une date ou numrique vous pouvez
formater le lien download. Le format DOWNLOAD est cependant plus
complexe que les autres formats masque car vous devez fournir au
moins trois paramtres, par exemple :
DOWNLOAD:EMP:RESUME:EMPNO

Le tableau ci-dessous dcrit les paramtres du format DOWNLOAD :


Position Attribut
1
DOWNLOAD

Obligatoire
Oui

Table Name

Oui

Column

Oui

Description
Identifie le format masque de report
DOWNLOAD.
Nom Case sensitive de la table
contenant la colonne cible de type
BLOB.
Nom Case sensitive de la colonne
3

Daphn Nougier - 12/11/2014

Oracle Application Express Application Builder User's Guide Release 4.2 - E35125-05

http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/advnc_blob.htm#HTMDB25911

4
5
6
7

containing
BLOB
Primary Key
Column 1
Primary Key
Column 2
MIME type
Column
Filename
Column

de type BLOB.
Oui
Non
Non
Non

Last Update
Column

Non

Character Set Non


Column

10

Content
Disposition

Non

11

Download
Text

Non

Nom Case sensitive de la premire


colonne cl primaire.
Nom Case sensitive de la deuxime
colonne cl primaire.
Nom de colonne Case sensitive
utilise pour stocker le MIME type.
Nom de colonne Case sensitive
utilise pour stocker le nom de
fichier du BLOB. Si NULL, le nom de
colonne est utilis par dfaut pour le
tlchargement du fichier.
Nom de colonne Case sensitive
utilise pour stocker la date de
dernire mise jour du BLOB. Si
utilise, le header HTTP du
download indique la date de dernire
modification et les navigateurs web
pourront mettre en cache le BLOB. Si
non spcifie, le navigateur ne peut
pas mettre en cache les fichiers.
Nom de la colonne utilise pour
stocker le jeu de caractres du
BLOB. Plus pertinent pour les
langues asiatiques pour l'encodage
du jeu de caractres.
Spcifie inline ou attachment.
Toutes les autres valeurs sont
ignores. Si un MIME type est fourni
et que le fichier est un type
affichable le fichier est affich. Si
MIME type n'est pas fourni ou que le
fichier ne peut pas tre affich en
ligne le download est propos
l'utilisateur.
Chane de texte utilise pour le lien
download. Si aucune chaine n'est
fournie, Download est utilis. Note
Les substitutions sont supportes
(utile pour les applications traduites)
.

Exemple :
4
Daphn Nougier - 12/11/2014

Oracle Application Express Application Builder User's Guide Release 4.2 - E35125-05

http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/advnc_blob.htm#HTMDB25911

DOWNLOAD:EMP:RESUME:EMPNO::RESUME_MIMETYPE:RESUME_FILENAME:RESUME_LA
ST_UPDATE::attachment:Resume

Pour saisir ces paramtres et crer le format dcrit ci-dessus, vous


devez slectionner le Blob Format pour le format de l'item. Une fois
slectionn, les attributs de la colonne Blob s'affichent et vous pouvez
remplir tous les autres paramtres tels que dcrits ci-dessus.
1.2.2 Afficher le BLOB
Si le BLOB est une image, vous pouvez l'afficher dans le report avec le
nouveau format mask 'IMAGE'. Quel que soit le MIME type, le report

essaye toujours d'afficher le BLOB. Si le BLOB ne peut pas tre affich,


une image brise est affiche la place.
Le tableau ci-dessous dcrit les paramtres du format masque IMAGE :
Position Attribut
1
IMAGE

Obligatoire
Yes

Table
Name

Yes

Column
containing
BLOB
Primary
Key
Column 1
Primary
Key
Column 2
MIME type
Column
Filename
Column

Yes

Last
Update
Column

Non

Character

Non

4
5
6
7

Description
Identifie le format masque report
IMAGE.
Nom Case sensitive de la table
contenant la colonne cible de type
BLOB.
Nom de la colonne Case sensitive de
type BLOB.

Yes

Nom Case sensitive de la colonne cl


primaire 1.

Non

Nom Case sensitive de la colonne cl


primaire 2.

Non

Nom de la colonne Case sensitive


utilise pour stocker le MIME type.
Non utilis pour le format IMAGE mais
laiss tel quel pour que le format
puisse tre facilement chang entre
IMAGE et DOWNLOAD.
Nom de colonne Case sensitive pour
stocker la date de dernire mise jour
du BLOB. Si utilis, le header HTTP du
download indique la date de dernire
modification et les navigateurs web
pourront mettre en cache le BLOB. Si
non spcifi, le navigateur peut ne pas
mettre en cache les fichiers.
Non utilis pour le format IMAGE mais

Non

5
Daphn Nougier - 12/11/2014

Oracle Application Express Application Builder User's Guide Release 4.2 - E35125-05

http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/advnc_blob.htm#HTMDB25911

Set
Column
10

Content
Non
Disposition

11

Alt Text

Non

laiss tel quel pour que le format


puisse tre facilement chang en
IMAGE et DOWNLOAD.
Non utilis pour le format IMAGE mais
laiss tel quel pour que le format
puisse tre facilement chang en
IMAGE et DOWNLOAD.
Chane utilis pour le tag alt associ
l'image.

Exemple :
IMAGE:EMP:RESUME:EMPNO::RESUME_MIMETYPE:RESUME_FILENAME:RESUME_LAST_
UPDATE::attachment:Resume

Pour pouvoir entrer ces paramtre et crer le format dcrit ci-dessus


vous devez slectionner Blob Format pour le format de l'item
Number/Date. Une fois slectionn, la rgion Blob Column attributes,
s'affiche et vous pouvez remplir tous les autres paramtres comme
dcrits ci-dessus.
1.3 Travailler avec les BLOBs par programmation
Une alternative est d'utiliser les mthodes prdfinies pour fournir un lien
download, vous pouvez utiliser la fonction APEX_UTIL.GET_BLOB_FILE_SRC.
1.3.1 Fonction GET_BLOB_FILE_SRC

L'avantage de cette approche est la capacit de mieux formater


l'affichage d'une image (avec les tags height et width). Note Cette
approche est valable uniquement depuis une session Oracle Application
Express. Cette mthode ncessite que les paramtres dcrivant le BLOB
soient lists avec le format d'un item de l'application. Cet item est ensuite
rfrenc par la fonction.
Syntaxe
APEX_UTIL.GET_BLOB_FILE_SRC (
p_item_name IN VARCHAR2 DEFAULT NULL,
p_v1 IN VARCHAR2 DEFAULT NULL,
p_v2 IN VARCHAR2 DEFAULT NULL,
p_content_disposition IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;

Paramtre de la fonction GET_BLOB_FILE_SRC


Paramtres

Description

p_item_name

Nom d'un item de page de l'application associ


6

Daphn Nougier - 12/11/2014

Oracle Application Express Application Builder User's Guide Release 4.2 - E35125-05

http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/advnc_blob.htm#HTMDB25911

la colonne DB de type fichier.


p_v1

Valeur de la cl primaire 1.

p_v2

Valeur de la cl primaire 2.

p_content_disposition

Spcifie inline ou attachment, toutes les autres


valeurs sont ignores.

1.3.2 Exemple SAMPLE Application (application package) :

Source du report :

Code :
7
Daphn Nougier - 12/11/2014

Oracle Application Express Application Builder User's Guide Release 4.2 - E35125-05

http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/advnc_blob.htm#HTMDB25911
select p.product_id,
p.product_name,
p.product_description,
p.category,
decode(p.product_avail, 'Y','Yes','N','No') product_avail,
p.list_price,
(select sum(quantity) from demo_order_items where product_id =
p.product_id) units,
(select sum(quantity * p.list_price) from
demo_order_items where product_id = p.product_id) sales,
(select
count(o.customer_id) from demo_orders o, demo_order_items t where o.order_id =
t.order_id and t.product_id = p.product_id group by p.product_id) customers,
(select max(o.order_timestamp) od from demo_orders o, demo_order_items i where
o.order_id = i.order_id and i.product_id = p.product_id) last_date_sold,
p.product_id
img, 'f?p='||:app_id||':6:'||:app_session||'::::P6_PRODUCT_ID:'||p.product_id
icon_link, decode(nvl(dbms_lob.getlength(p.product_image),0),0,null,
'<img
style="border: 4px solid #CCC; -moz-border-radius: 4px; -webkit-border-radius:
4px;" '||
'src="'||
apex_util.get_blob_file_src('P6_PRODUCT_IMAGE',p.product_id)||
'" height="75"
width="75" alt="Product Image" title="Product Image" />')
detail_img, decode(nvl(dbms_lob.getlength(p.product_image),0),0,null,
apex_util.get_blob_file_src('P6_PRODUCT_IMAGE',p.product_id))
detail_img_no_style from demo_product_info p

Report Attributes

Exemple avec form

Item Product Image (File Browse) Settings :

8
Daphn Nougier - 12/11/2014

Oracle Application Express Application Builder User's Guide Release 4.2 - E35125-05

http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/advnc_blob.htm#HTMDB25911

Source : DB Column (BLOB)

Region Product Image


Conditions :
declare
begin
if :P6_PRODUCT_ID is not null then
for c1 in (select nvl(dbms_lob.getlength(product_image),0) l
from demo_product_info
where product_id = :P6_PRODUCT_ID)
loop
if c1.l > 0 then
return true;
end if;
end loop;
end if;
return false;
end;

9
Daphn Nougier - 12/11/2014

Oracle Application Express Application Builder User's Guide Release 4.2 - E35125-05

http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/advnc_blob.htm#HTMDB25911

Item Image (display only)

Source :

Code :
return '<img
src="'||apex_util.get_blob_file_src('P6_PRODUCT_IMAGE',:P6_PRODUCT_ID)||'" />';

Page Process
Suppression de l'image

code :
-- empty the image
update demo_product_info
set product_image = null,

10
Daphn Nougier - 12/11/2014

Oracle Application Express Application Builder User's Guide Release 4.2 - E35125-05

http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/advnc_blob.htm#HTMDB25911
mimetype = null,
filename=null,
image_last_update=null
where product_id = :P6_PRODUCT_ID;

Conditions

11
Daphn Nougier - 12/11/2014

Oracle Application Express Application Builder User's Guide Release 4.2 - E35125-05

http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/advnc_blob.htm#HTMDB25911

1.4

Exemple d'application avec form et report affichant une image

1.4.1 Codage du report


Source du report :

Attribut du report Column attribute :


Remove HTML and escape special characters

12
Daphn Nougier - 12/11/2014

Oracle Application Express Application Builder User's Guide Release 4.2 - E35125-05

http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/advnc_blob.htm#HTMDB25911

1.4.2 Codage d'un form

Region : Edit Personne - Item File Browse :

Source : (Database Column BLOB)

Settings

13
Daphn Nougier - 12/11/2014

Oracle Application Express Application Builder User's Guide Release 4.2 - E35125-05

http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/advnc_blob.htm#HTMDB25911

Page Process

REGION HTML Text (Photo)


Template Sidebar rgion
Conditions type
PLSQL Function body Returning a Boolean
Expression
declare
begin
if :P3_PERS_ID is not null
then
for c1 in (select nvl(dbms_lob.getlength(photo),0) l
from personne
where pers_id = :P3_PERS_ID)
loop
if c1.l > 0
then
return true;
end if;
end loop;
end if;
return false;
end;

Affichage de l'image sur un item display only associe la rgion HTML


14
Daphn Nougier - 12/11/2014

Oracle Application Express Application Builder User's Guide Release 4.2 - E35125-05

http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/advnc_blob.htm#HTMDB25911

Source PL/SQL Function body


Source value
return '<img src="'||apex_util.get_blob_file_src('P3_PHOTO',:P3_PERS_ID)||'" />';

Conditions Type
Exists(SQL query returns at least one row)
Expression 1
SELECT mimetype from personne where pers_id = :P3_PERS_ID and mimetype like
'image%'

Security
Pour afficher l'image et pas les tags HTML mettre Escape spcial characters no

15
Daphn Nougier - 12/11/2014

Vous aimerez peut-être aussi