IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Coldfusion Discussion :

Mettre un lien Download sur données Clob provenant Base Oracle


Sujet :

Coldfusion

  1. #1
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut Mettre un lien Download sur données Clob provenant Base Oracle
    Bonjour

    Mon niveau en ColdFusion date d'hier et
    je suis plutôt mainframiste d'habitude so ...

    Voici ma question :
    Je récupère un champ Clob de ma base de données Oracle
    et je veux niveau affichage mettre un lien sur ce Clob (dont le
    contenu pourrait ête n'importe quoi (.xls, .doc, .txt ...)

    Comme puis-je m'y prendre ?
    Puis-je faire ça d'un coup, ou dois-je décharger ce Clob dans un fichier
    temporaire puis mettre un lien Download qui point sur ce fichier
    temporaire ?


    Important : La version sur mon serveur de Cold Fusion est la 6.1

    Merci pour toute réponse
    Laurent
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Points : 94
    Points
    94
    Par défaut
    Bonjour,

    pour le cloc, blob avec Oracle, nous avons mis en place une solution avec JDBC, mais en version CF7. Cela doit aussi fonctionner avec la version 6.1. On peut utiliser les deux manières, soit en directe soit avec un fichier temp. L'avantage de ne pas avoir un fichier temporaire est de ne pas laisser de trace (lien) qui pourrait être ouvert par une autre personne par exemple.

    Il suffit de prendre le contenu, le mettre dans une var, de faire un cfoutput en ayant changé l'entête (MIME) selon le type de fichier. Si tu désires des détails, je peux te filler qq source que nous utilisons, mais dans les grandes lignes c'est ça.

    Fais moi signe durant la semaine, j'ai pas de source avec moi aujourd'hui.
    Christophe

  3. #3
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut


    =>

    Je t'ai répondu par message privé
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Points : 94
    Points
    94
    Par défaut
    OK,

    Voici un bout de code pour sortir du texte brut d'un blob. Nous avons donc une table dans un DB Oracle 10g qui contient entre autre un champ Blob (colv_blob). Pour chaque fichier nous gardons le nom du fichier au moment de l'upload dans la base et nous avons une liste de mime type dans une autre table (pas dans l'exemple). A chaque demande de fichier, nous chargeons le blob, on le converti en string car il est uploader dans la base en binary.

    C'est un exemple simple, mais comme tout notre développement est dans des objets, cela sera un peu long et compliqué à expliquer. J'ai donc préféré refaire un petit bout de code sur notre base.

    Ce qu'il reste donc à gérer, c'est effectivement les types MIME, faire attention au header, comme on redéfini celui-ci, il ne doit contenir que des données du type. Si par exemple le debug reste actif pour un fichier PDF, cela ne fonctionnera pas.

    Nous utilisons une connexion à la db oracle via JDBC, il faut faire attention avec le version de JDBC (la dernière version convient très bien), sinon on est limité avec la taille et surtout ne pas oublier de cocher les cases Blob et Clob dans l'administration de Coldfusion sur la datasource.

    Voilà à ta disposition si tu as d'autre question.
    Christophe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <cfsetting showdebugoutput="false">
    <cfquery name="qSelectBlob" datasource="#APPLICATION.DSN#">
    	SELECT * FROM t_co_cont_lang_vers WHERE colv_id_cont = 6
    </cfquery>
    <cfheader name="Content-Type" value = "text/html">
    <cfheader name="Content-Disposition" value="inline; filename=#qSelectBlob.colv_fich_name#"> 
    <cfheader name="Content-length" value="#len(qSelectBlob.colv_blob)#">
    <cfoutput>#toString(qSelectBlob.colv_blob)#</cfoutput>

  5. #5
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Suite ...
    Merci tout d'abord pour ce bout de code !

    Alors ce que je rencontre maintenant comme pb c'est que mon fichier
    attaché une fois downloadé de ma base Oracle est illisible , ou plutôt il contient dans son ensemble ce type de données => '... 1626C65207265706F7274730D0A0D0 ...'
    Note : à la base c'était un TXT ...

    J'ai pourtant bien effectué un toString du Clob, maintenant c'est peut-être
    au stockage (insertion) de mes données en Base que j'ai loupé
    quelque chose ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <form name="form1" method="post" EncType="multipart/form-data">		
    
    
    			<cfsetting showdebugoutput="false">
    			<cfquery name="qyAttach" Datasource="#Request.Dsn#" >
    					 SELECT  Attachment , Attachment_name 
    						 FROM MaTable
    						WHERE Seq = '#Seq#'
    			</cfquery>
                    	<cfheader name="Content-Type" value = "text/html">
                    	<cfheader name="Content-Disposition" value="inline; filename=#qyAttach.Attachment_name#"> 
                    	<cfheader name="Content-length" value="#len(qyAttach.Attachment)#">
    
    	        	<cfoutput query="qyAttach">
    				<cfset vAttachment      = #Attachment#>
    				<cfset vAttachment_name = #Attachment_name#>
    			</cfoutput> 
    
    
    			<!-- Set the file names for the downloaded Attach -->
    			<cfset vInternalFile = "/ec/production/app/doc/work/download/"& #qyAttach.Attachment_name#>
    			<cfset vExternalFile = #qyAttach.Attachment_name#>	
    	
    			<input type="hidden" name="hidInternalFile" <cfoutput>value='#vInternalFile#'</cfoutput>> 
    			<input type="hidden" name="hidExternalFile" <cfoutput>value='#vExternalFile#'</cfoutput>> 
    
    			<!-- Create the file  -->
    			<cfif isdefined("vAttachment") and #vAttachment# neq "">
    				<cffile action = "write"
    								file   = "#vInternalFile#"
    								output = "#toString(qyAttach.Attachment)#">	
    			</cfif>
    	
    				
    			<!-- Display a button that enables the user to manually download if the automatic download --> 
    			<!-- doesnt't work                                                                      -->
    			<cfoutput>
    				<div align="center">Click on the download button if the download does not work.
    				  <br>
    				  <br>
    				  <br>
    				  <input type="button" style="WIDTH: 70px" name="btDownload" value="Download" class="but1" onClick="Javascript: ProcessDownload();">
    			    <input type="button" style="WIDTH: 70px" name="btClose" value="Close" class="but1" onClick="Javascript: window.close();">
    			  </div>
    			</cfoutput>
    		</form>
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  6. #6
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    je joins l'Insert , ça peu aider à comprendre mon pb


    INSERT INTO MaTable
    (SEQ,ATTACHMENT,ATTACHMENT_NAME,...)
    values (
    #QRY_SEQ.seq_request#,
    <cfqueryparam value="#file_blob#" cfsqltype="cf_sql_blob">,
    '#v_attachment_name#', ...
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Points : 94
    Points
    94
    Par défaut
    Alors cela peut sembler un peu bizarre, mais après plusieurs essais, la meilleure manière que l'on a trouvé pour traiter tous les cas est le code suivant pour l'insert. Sans cette multitude de conversion, on n'avait chaque fois un problème avec certain type de fichier (pdf, exe, jpg, txt, html) cela fonctionne bien comme cela chez nous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <cfqueryparam value="#toBinary(toBase64(toString(COLV_BLOB)))#" cfsqltype="cf_sql_blob">

  8. #8
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Merci pour tes bonnes remarques

    Et particulièrement celle de l'administration ColFusion sur clob et blob

    It's working now !
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Mettre le lien excel sur la page d'accueil
    Par sandralep84 dans le forum IHM
    Réponses: 12
    Dernier message: 28/09/2012, 15h01
  2. Comment mettre plusieurs liens Hypertexte sur une image
    Par Gyzou dans le forum Powerpoint
    Réponses: 3
    Dernier message: 20/03/2008, 03h14
  3. Exportation des données d'une base Oracle sous forms
    Par moezsokrati dans le forum Forms
    Réponses: 4
    Dernier message: 13/10/2005, 08h55
  4. importer les données d'une base oracle
    Par hossni dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 07/07/2005, 16h33
  5. Tranfert de données d'une base Oracle vers PostGre
    Par Elois dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/01/2004, 18h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo