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) :
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&eacute;lectionnez la photo :&nbsp;<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>
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
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();
Et comme vous vous en doutez, ça ne fonctionne pas.

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)
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 =
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 ? ... ?

Merci de vos lumières,
Bonne journée !