Bonjour tout le monde,
Le sujet a déjà été traité mais mon problème est différent de ce que j'ai pu trouvé sur ce forum.
Je souhaite uploader des photos via formulaire dans une BD MySQL. (Je travaille actuellement en local avec EasyPHP, cfg par défaut).
Ma table PHOTO :
- NUM_PHOTO (clé primaire), int(32), auto_increment
- IMAGE_BIN longblob
- NOM_FICHIER char(32)
- TAILLE_FICHIER char(32)
- TYPE_FICHIER char(32)
- NUM_MANDAT char(32), clé étrangère, indiquant le mandat auquel la photo est associée
Mon formulaire d'upload (dans photos.php) :
Mon code dans checkPhotos.php, qui effectue l'upload des données :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5<form method="post" <?php echo "action=\"checkPhotos.php?id=$id\"" ?> enctype="multipart/form-data"> Sélectionnez la photo : <input type="file" id="image" name="imagee" size="60"><br /> <input type="text" name="image" /> <div align="center"><input name="ok" type="submit" value="Envoyer"></div></form>
Et comme vous vous en doutez, ça ne fonctionne pas.
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 <?php if (isset($_GET["id"])) $num_mandat = $_GET["id"]; else exit("Impossible de récupérer la référence du bien pour lequel vous voulez ajouter une photo. Arrêt de l'exécution.\n"); mysql_connect("localhost", "root", ""); mysql_select_db("test"); $image = $_REQUEST["image"]; $donnees = addslashes(fread(fopen($image, "r"), filesize($image))); $nom = "test"; $taille = filesize($image); $type = filetype($image); if ($result = mysql_query("INSERT INTO PHOTO (IMAGE_BIN, NOM_FICHER, TAILLE_FICHIER, TYPE_FICHIER, NUM_MANDAT) VALUES ('$donnees','$nom','$taille','$type','$num_mandat')")) echo "result : ".$result; else echo "pb execution rqt. result = $result"; mysql_close();
Quelques points :
- le $_REQUEST["image"] doit être impossible sur des champs de type <file>
- j'avais modifié le code pour que $image soit une chaine contenant le chemin du fichier
- je me suis inspiré d'un tutoriel sur le JDN. Ce n'est pas super bien expliqué mais c'est vraiment le type d'upload dont j'ai besoin (nécessité d'associer une photo à une donnée présente dans une autre table)
Et biensur, mon message d'erreur pour le code que je viens de vous citer :
(après avoir cliquer sur "Envoyer" dans le formulaire)
Il ne s'agit que d'un warning mais la requete ne s'exécute pas. Je pense que cela vient du fait que les données binaires de l'image ne sont pas correctement récupérées. Y a t-il un lien avec le poids de l'image ? ... ?Warning: fread(): supplied argument is not a valid stream resource in C:\Program Files\EasyPHP 2.0b1\www\****\****\checkPhotos.php on line 30
INSERT INTO PHOTO (IMAGE_BIN, NOM_FICHER, TAILLE_FICHIER, TYPE_FICHIER, NUM_MANDAT) VALUES ('','test','','','reference')
pb execution rqt. result =
Merci de vos lumières,
Bonne journée !
Partager