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 faisantJusque 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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);
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 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part <a href=http://ma_proc?p_image=....>
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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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");
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
Partager