Comment passer des headers http ?
Bonjour
J'utilise le portail 10.1.4, et je developpe en PL/SQL. J'ai commencé à developper une petite gallerie d'images. Les images sont stockées dans des champs blobs d'une table. Lorsque l'image est dans un format compatible web, je peux tout simplement l'afficher en faisant
Code:
1 2 3 4 5 6 7 8 9 10
| <img src=http://...../ma_proc?p_image=....>
et ma procédure qui affiche le blob est :
SELECT ... INTO l_img_std, l_mime_std
FROM imgal_image
WHERE ...;
OWA_UTIL.mime_header (l_mime_std, FALSE);
OWA_UTIL.http_header_close;
WPG_DOCLOAD.download_file (l_img_std); |
Jusque là, tout va bien. Là ou ca se complique, c'est quand mon utilisateur charge un EPS dans la base. Faute de pouvoir le lui afficher dans une page, je dois au moins lui permettre de le télécharger. Et là j'ai un peu de mal. En effet je peux faire un lien du style
Code:
<a href=http://ma_proc?p_image=....>
et ce lien permet de télécharger l'image, mais ... le format EPS n'est pas proposé à l'enregistrement. Par défaut, la boite de dialogue pour enregistrer le fichier propose un fichier de nom "ma_proc" (ce qui n'est pas terrible en soi, mais admettons) mais surtout sans extension. Je souhaite donc corriger cela. Est ce que quelqu'un a une idée ?
J'ai trouvé du code PHP de qqu'un qui voulait forcer le téléchargement d'un fichier via un lien (meme pour un type mime reconnu) et sa solution consistait à modifier détailler les headers :
Code:
1 2 3 4 5 6 7
| header("Content-disposition: attachment; filename=$file");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: image/jpeg\n");
header("Content-Length: ".filesize($file));
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0"); |
J'aimerais essayer la même chose pour voir mais je n'ai pas trouvé de procédure équivalente en PL/SQL. Si j'écris betement le texte avec un htp.p je n'obtiens plus de téléchargement mais le contenu du blob qui s'affiche en texte sur la page, comme si le header n'était donc pas bon.
A moins qu'une autre approche soit préférable...
En aparté, si qqu'un savait aussi s'il est possible de forcer le nom du fichier à enregistrer par défaut (pour éviter le nom de ma proc) ca serait un plus.
Merci beaucoup