Insertion Image dans ma BD via upload [Résolu]

Signaler
Messages postés
46
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
16 avril 2008
-
Messages postés
164
Date d'inscription
dimanche 1 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2007
-
Hello,
J'aimerai, avec le code suivant (trouvé sur le site), insérer une image ou fichier non pas sur mon disque dur, mais simplement dans ma BD.

<cfif not isdefined("form.fichier")>

<cfform action="upload.cfm" enctype="multipart/form-data" method="post">
Sélectionnez le fichier à uploader :




</cfform>

<cfelse>
<cffile action="upload" filefield="form.fichier" destination="c:\Test" nameconflict="Overwrite">
<cfoutput>
Vous avez Uploadé le fichier : #File.ClientFileName#.#File.ClientFileExt#

dans le répertoire : #File.ServerDirectory#
</cfoutput>
</cfif>

Merci de votre aide

8 réponses

Messages postés
164
Date d'inscription
dimanche 1 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2007
1
le c'est un champ caché pour passer la
variable correspondant à l'identifiant unique de ton etablissement...
tu peux faire comme ça ou autrement (var de sessions par exemple... à
toi de voir... suivant ce que tu souhaites faire)



pour la table, je ferais par exemple :

pidx : numérique autoincrémentable (à toi de voir quel type de numérique)

petablissementidx : même type que ta clef primaire de la table etablissement (je suppose ici numérique entier)

pour les champs noms : bah... un champ de caractères de 256 devrait suffire



bon. le prends pas mal, mais j'ai l'impression que tu rames graves, et
pas seulement en coldfusion. Si tu veux pouvoir être capable de te
débrouiller seul, il faut que tu aies quand même de bonnes bases en
HTML (ou XHTML) , c'est mieux..

Je te conseillerais aussi de trouver la doc de CFMX en français,
ou un bouquin (genre celui de campuspress) sur cfmx, et de lire
attentivement et en t'aidant des exemples pour faire tes propres
petites appli...Pas besoin de tous lire au départ, juste les parties de
premiers pas et d'introduction... tu liras la partie avancée après..
comme ça, tu acquierera les bases de CF... normalement il y a quelques
petites explications(trés succintes) dans ce bouquin sur SQL et les
bases de données... c'est auss trés utile. Je te conseillerais donc de
prendre, à terme, également un bouquin(ou une doc sur le net)
d'introduction aux bases de données et au SQL
Messages postés
164
Date d'inscription
dimanche 1 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2007
1
Bon... j'ai jamais réellement essayé, mais si je ne me trompe pas c'est un truc du genre :

tu écris ton fichier sur le serveur (comme dans ton source), tu le lis
avec un <cffile action="readBinary"....>, tu convertis le tout en
base64(afin d'en faire des caractères gérables) et tu insères ceci en
base, dans un blob. et tu effaces le ficheir original.



Pour le lire, tu lis en base, et tu convertis en binaire. Et n'oublie pas d'indiquer le type mime avec le tag cfcontent...



faudra que j'essaye tiens... par contre ça risque d'utiliser énormément
de ressources au niveau serveur, si les fichiers sont gros ou si
plusieurs personnes l'utilisent en même temps
Messages postés
46
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
16 avril 2008

Hello,
Merci...
Mais y a rien de moins compliqué qui existe pour mettre simplement un fichier sur une BD ? c'est superbement expliqué mais je serais totalement incapable de le faire..
et un blob ? jamais entendu ce terme...
en fait le seul but de ma demande.. et que le client puisse me mettre à disposition une photo de son établissement... et que moi, ben je l'affiche sur sur son compte...et tout ca automatiquement... tu vois ce que je veux dire ?
Merci
Salutations
Alf
Messages postés
164
Date d'inscription
dimanche 1 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2007
1
bah... dans ce cas, tu stockes juste le nom du fichier en base, dans la
table de l'etablissement, et tu stocke tous tes fichiers dans un
répertoire particulier... c'est plus simple et plus light.



Pour récupérer le nom du fichieir avant de l'insérer utilises plutot
#File.ServerFileName# qui est le nom généré par le serveur si jamais tu
gères le nom unique...



si tu n'y arrives, je te ferais une petit exemple
Messages postés
46
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
16 avril 2008

Je prend bien bien volontiers ton exemple...j'ai tellement peu d'expérience en coldfusion...
Merci encore
Messages postés
164
Date d'inscription
dimanche 1 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2007
1
désolé, j'ai pas encore eu le temps de t'en écrire un...

bon... allez, j'en pond un vite fait, il est pas complet. il permet
juste d'insérer en base(je pense qu'il faut aussi gérer les
suppressions en base et la suppression de fichier..Il faudrait aussi
gérer les erreurs...).



Je sais pas s'il fonctionne... car pas testé tel quel (peut êtres quelques petits bugs à corriger).



Je parts du principe que tu as une autre table pour gérer tes photos
(te permettant d'en avoir ainsi plusieurs par etablissement, si tu mets
une clef primaire autoincrementable dans ta table photo), et que tu
cliques sur un lien (ou tu proviens d'un formulaire) avec en parametre
ton identifiant unique d'etablissement (etablissementidx ??) pour
arriver sur le formulaire d'upload.

bon, je sauvegarde aussi le nom original de la photo (pour faire
bien...), mais celui à utiliser est celui généré côté serveur (pour
éviter les conflits de nom)



<cfset destination="c:\Test">



<cfif not isdefined("form.fichier")>



<cfform action="upload.cfm" enctype="multipart/form-data" method="post">

Sélectionnez le fichier à uploader :








</cfform>



<cfelse>
<!--- Sauvegarde fichier --->

<cffile action="UPLOAD"
filefield="NoteFile" destination="#Destination#"
nameconflict="MAKEUNIQUE">



<!--- Référence le fichier dans la base --->

<cfquery datasource="tonDatasource">

INSERT INTO Photo( PEtablissementIdx, POriginalName, PFileName)

VALUES(
#etablissementIdx#, '#cffile.clientFile#', '#cffile.serverFile#' )

</cfquery>


Upload effectué...

</cfif>
Messages postés
164
Date d'inscription
dimanche 1 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2007
1
ah oui... la table est comme suit :

Photo( PIdx,PEtablissementIdx, POriginalName, PFileName)
Messages postés
46
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
16 avril 2008

Salut Bastoun,
Un grand merci pour ton aide encore une fois.
Petite question :
tu pourrais juste me dire à quoi correspond exactement les champs dans la table photo, et de quel genre sont-ils ? style si PEtablissement c'est un char ou bien un int etc...et à quoi sert-il en 2 mots.
2ème questions : que veut dire cette ligne de code


Merci Merci