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

alf666666 46 Messages postés samedi 1 novembre 2003Date d'inscription 16 avril 2008 Dernière intervention - 16 août 2005 à 09:39 - Dernière réponse : cs_bastoun 164 Messages postés dimanche 1 octobre 2000Date d'inscription 23 mars 2007 Dernière intervention
- 23 août 2005 à 09:58
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
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_bastoun 164 Messages postés dimanche 1 octobre 2000Date d'inscription 23 mars 2007 Dernière intervention - 23 août 2005 à 09:58
3
Merci
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

Merci cs_bastoun 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_bastoun
cs_bastoun 164 Messages postés dimanche 1 octobre 2000Date d'inscription 23 mars 2007 Dernière intervention - 18 août 2005 à 11:40
0
Merci
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
Commenter la réponse de cs_bastoun
alf666666 46 Messages postés samedi 1 novembre 2003Date d'inscription 16 avril 2008 Dernière intervention - 18 août 2005 à 11:52
0
Merci
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
Commenter la réponse de alf666666
cs_bastoun 164 Messages postés dimanche 1 octobre 2000Date d'inscription 23 mars 2007 Dernière intervention - 18 août 2005 à 12:46
0
Merci
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
Commenter la réponse de cs_bastoun
alf666666 46 Messages postés samedi 1 novembre 2003Date d'inscription 16 avril 2008 Dernière intervention - 18 août 2005 à 13:07
0
Merci
Je prend bien bien volontiers ton exemple...j'ai tellement peu d'expérience en coldfusion...
Merci encore
Commenter la réponse de alf666666
cs_bastoun 164 Messages postés dimanche 1 octobre 2000Date d'inscription 23 mars 2007 Dernière intervention - 22 août 2005 à 12:15
0
Merci
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>
Commenter la réponse de cs_bastoun
cs_bastoun 164 Messages postés dimanche 1 octobre 2000Date d'inscription 23 mars 2007 Dernière intervention - 22 août 2005 à 12:19
0
Merci
ah oui... la table est comme suit :

Photo( PIdx,PEtablissementIdx, POriginalName, PFileName)
Commenter la réponse de cs_bastoun
alf666666 46 Messages postés samedi 1 novembre 2003Date d'inscription 16 avril 2008 Dernière intervention - 23 août 2005 à 08:55
0
Merci
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
Commenter la réponse de alf666666

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.