| |
Consulter les messages sans réponse | Consulter les sujets actifs
|
Page 1 sur 1
|
[ 15 message(s) ] |
|
| Auteur |
Message |
|
docemmet
|
Publié: 11 Nov 2003, 12:23 |
|
 |
| Régulier |
 |
Inscription : 05 Fév 2002, 22:00 Message(s) : 489
|
Bonjour,
Je me pose quelques questions...
J'ai un script que j'utilise pour uploader des images sur un serveur. Lorsqu'il est temps d'uploader une seule image, je n'ai aucun problème. Mon problème se situe lorsque je désire envoyer plusieurs images dans le même form, comme avec le form ci bas:
Code : <form name="form1" method="post" action="upload_image.php" enctype="multipart/form-data"> <table width="500" border="0" cellspacing="0" cellpadding="5"> <tr> <td><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">1</font></b></td> <td> <input type="file" name="1"> </td> </tr> <tr> <td><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">2</font></b></td> <td> <input type="file" name="2"> </td> </tr> <tr> <td><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">3</font></b></td> <td> <input type="file" name="3"> </td> </tr> <tr> <td><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">4</font></b></td> <td> <input type="file" name="4"> </td> </tr> <tr> <td><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2"></font> </b></td> <td> <input type="hidden" name="submitted" value="true"> <input type="submit" name="Submit" value="Submit"> </td> </tr> </table> </form>
Pour permettre au script d'upload (un peu plus bas) d'uploader chaque images présente dans chacun des champs (1,2,3,4), j'ai placé un foreach, comme dans le code ici: Code : require("fileupload-class_logo.php"); #--------------------------------# # Variables #--------------------------------#
// The path to the directory where you want the // uploaded files to be saved. This MUST end with a // trailing slash unless you use $path = ""; to // upload to the current directory. Whatever directory // you choose, please chmod 777 that directory.
$path = "../_images/logo_eleveurs/";
// The name of the file field in your form.
$upload_file_name = "userfile";
// ACCEPT mode - if you only want to accept // a certain type of file. // possible file types that PHP recognizes includes: // // OPTIONS INCLUDE: // text/plain // image/gif // image/jpeg // image/png // Accept ONLY gifs's #$acceptable_file_types = "image/gifs"; // Accept GIF and JPEG files $acceptable_file_types = "image/gif|image/jpeg|image/pjpeg";
// Accept ALL files #$acceptable_file_types = "";
// If no extension is supplied, and the browser or PHP // can not figure out what type of file it is, you can // add a default extension - like ".jpg" or ".txt"
$default_extension = "";
// MODE: if your are attempting to upload // a file with the same name as another file in the // $path directory // // OPTIONS: // 1 = overwrite mode // 2 = create new with incremental extention // 3 = do nothing if exists, highest protection
$mode = 2;
#--------------------------------# # PHP #--------------------------------# foreach ($_POST as $v) { if ($_REQUEST['submitted']) { // Create a new instance of the class $my_uploader = new uploader; // OPTIONAL: set the max filesize of uploadable files in bytes $my_uploader->max_filesize(300000); // OPTIONAL: if you're uploading images, you can set the max pixel dimensions $my_uploader->max_image_size(800, 800); // max_image_size($width, $height) // UPLOAD the file if ($my_uploader->upload($upload_file_name, $acceptable_file_types, $default_extension)) { $success = $my_uploader->save_file($path, $mode); } if ($success) { // Successful upload! echo "<span class=\"texte\">"; print($my_uploader->file['name'] . " a été envoyé avec succès! <a href=\"" . $_SERVER['PHP_SELF'] . "\"></a><br>"); $image = $my_uploader->file['name']; } else { // ERROR uploading... if($my_uploader->errors) { while(list($key, $var) = each($my_uploader->errors)) { echo $var . "<br>"; } } } } }
Lorsque j'upload UNE SEULE image, donc seulement un champ, ca fonctionne #1, mais dès que j'en mets plus qu'un, j'ai des erreur, c'est à dire que ca upload rien du tout et l'erreur que j'obtient est:
Citer: Only image/gif or image/jpeg or image/pjpeg files may be uploaded Only image/gif or image/jpeg or image/pjpeg files may be uploaded
Pourtant, je prends les mêmes images que lorsque j'en envoie qu'une seule et elle sont bien au format autorisé...
Pouvez vous m'indiquer le problème, ou la facon de le régler s.v.p...
J'étais tout content de mettre un foreach, croyant que mon problème serait réglé... le pire, c'est que ca doit être qu'une petite niaiserie...
MErci
Mathieu
_________________ -------------------
Mathieu Lessard
"Toute grande guerre se gagne d'abord par de petits coups d'épée"
|
|
| Haut |
|
 |
|
DolGuldur
|
Publié: 11 Nov 2003, 12:40 |
|
Inscription : 14 Mars 2002, 13:44 Message(s) : 436
|
Voici comment moi je m'y suis pris, ça fonctionne pour une ou plus...
Code : <?php
$numoffile = 5; $j = 0; $maxbytes = "400000"; $maxbytesk = "400k"; $uploaddir = 'uploaded_files/'; $nom_unique = date("m-d-y"); $imgarray = array("image/pjpeg", "image/jpeg");
if ($_POST) { for ($i=0;$i<$numoffile;$i++) { if (trim($_FILES['image_enfant']['name'][$i])!="") {
Ici je vérifie la grosseur du fichier en upload if ($_FILES['image_enfant']['size'][$i] > $maxbytes) { echo '<center><br>Le fichier est plus grand que la limite permise de:<b>'." ".$maxbytesk; echo '<br><br><br><br><a href="upload.php">Page précédente</a>'; exit; } if (!in_array($_FILES['image_enfant']['type'][$i],$imgarray)){ echo '<center><br>Mauvais type de fichier!!'." ".' Veuillez charger seulement des fichiers de type .JPG.<br><br>Nom de fichier:'." ".'<b>'.$_FILES['image_enfant']['name'][$i]; echo '<br><br><br><br><a href="upload.php">Page précédente</a>'; exit; } $nouveau_nom = ereg_replace(" ","",$_FILES['image_enfant']['name'][$i]); $newfile = $uploaddir.$nom_unique."_".$nouveau_nom; move_uploaded_file($_FILES['image_enfant']['tmp_name'][$i], $newfile); $j++; } } } if (isset($j)&&$j>0){ print '<br><center>Les fichiers ont été téléchargés!</center><br>'; } ?>
Si vous avez besoin d'explications, n'hésitez pas!!
|
|
| Haut |
|
 |
|
docemmet
|
Publié: 11 Nov 2003, 12:44 |
|
 |
| Régulier |
 |
Inscription : 05 Fév 2002, 22:00 Message(s) : 489
|
|
ok, mais avec e que tu viens de m'envoyer, je n'ai qu'à remplacer mon code avec ca?
Aussi, j'ai besoin d'avoir le nom du fichier uploadé pour le placer dans une db et l'appeller plus tard...
Voilà pourquoi mon script était intéressant... script que j'ai modifié d'un script existant...
Merci
Mathieu
_________________ -------------------
Mathieu Lessard
"Toute grande guerre se gagne d'abord par de petits coups d'épée"
|
|
| Haut |
|
 |
|
DolGuldur
|
Publié: 11 Nov 2003, 12:46 |
|
Inscription : 14 Mars 2002, 13:44 Message(s) : 436
|
En passant le code mon autre message va dans le fichier upload_results.php qui est appelé à partir de upload.php:
Code : <?php $numoffile = 5; echo "<br><center><img src='titre.jpg'></center><br>"; print "<center><form method='post' enctype='multipart/form-data' action='upload_results.php'></center>"; for($i=0;$i<$numoffile;$i++) { print "<center><input type='file' name='image_enfant[]' size='60'><br></center>"; } print "<center><br><input type='submit' name='action' value='Envoyer'></center>"; print "<center><strong><font face='arial' size='3'>Seuls les fichiers de format JPG, JPEG sont acceptés!</font></strong></center>"; print "</form>"; ?>
|
|
| Haut |
|
 |
|
DolGuldur
|
Publié: 11 Nov 2003, 12:49 |
|
Inscription : 14 Mars 2002, 13:44 Message(s) : 436
|
|
Pour le mettre dans ta base de données, tu pourrais modifier le code de upload_results.php pour que le nom du fichier aille s'inscrire une fois l'upload terminé, juste après la ligne move_uploaded_file....
|
|
| Haut |
|
 |
|
docemmet
|
Publié: 11 Nov 2003, 12:50 |
|
 |
| Régulier |
 |
Inscription : 05 Fév 2002, 22:00 Message(s) : 489
|
|
bon, me semble aussi que ça va mieux...
très fort... merci beaucoup...
Maintenant, me reste à savoir comment prendre le nom du fichier du champ 1 et aller porter le nom du fichier dans une db, et ainsi de suite avec tout les fichiers uploadé... et que si le champs 2 n'est pas "fournis" (donc pas d'image envoyé), que ca n'inscrive rien dans la db...
En tk... si tu as une idée, dis moi s.v.p....
Mais très fort ton script...
MErci
Mathieu
_________________ -------------------
Mathieu Lessard
"Toute grande guerre se gagne d'abord par de petits coups d'épée"
|
|
| Haut |
|
 |
|
docemmet
|
Publié: 11 Nov 2003, 15:57 |
|
 |
| Régulier |
 |
Inscription : 05 Fév 2002, 22:00 Message(s) : 489
|
Citer: Pour le mettre dans ta base de données, tu pourrais modifier le code de upload_results.php pour que le nom du fichier aille s'inscrire une fois l'upload terminé, juste après la ligne move_uploaded_file....
Bon... merci, au risque de paraitre con, comment je fais pour savoir quel document le champs 1 a envoyé, le champ 2... ?
Car quand je fais echo $image_enfant[$i];
, j'obtiens ceci par exemple: /var/tmp/phpsgTDW1¸
Merci
Mathieu
_________________ -------------------
Mathieu Lessard
"Toute grande guerre se gagne d'abord par de petits coups d'épée"
|
|
| Haut |
|
 |
|
DolGuldur
|
Publié: 11 Nov 2003, 16:21 |
|
Inscription : 14 Mars 2002, 13:44 Message(s) : 436
|
Salut, si vous utilisez le même code que je vous ai envoyé, faites:
Code : echo $nouveau_nom."<br>"; Juste après la ligne: Code : move_uploaded_file($_FILES['image_enfant']['tmp_name'][$i], $newfile); Ca va vous donner tous les fichiers qui ont été uploadé!
Sinon, postez votre code, ça va m'éclaircir!!
|
|
| Haut |
|
 |
|
docemmet
|
Publié: 11 Nov 2003, 16:24 |
|
 |
| Régulier |
 |
Inscription : 05 Fév 2002, 22:00 Message(s) : 489
|
|
Ok, ca j'avais déjà vu. Mais tu vois, je vais expliquer ce que je veux faire.
Dans un formulaire, je veux que qqun upload des images. Par exemple, si je prends l'exemple de la vente d'une voiture, il peut uploadé une image pour le devant de l'auto, le derrière, le dedant, le dessus, le dessous.... ok?
Donc, je vais mettre un nom de chambre x (admettons 5). Le premier champs sera pour le devant de la voiture, le 2eme pour le derrière...
Donc il est important pour moi de pouvoir savoir ce qui a été uploadé par le premier champ... le deuxième, car je vais aller porter le nom de l'image dans la db à la cellule correspondante...
Je m'exprime correctement? Je sais pas si c'est clair...
Merci
Mathieu
_________________ -------------------
Mathieu Lessard
"Toute grande guerre se gagne d'abord par de petits coups d'épée"
|
|
| Haut |
|
 |
|
DolGuldur
|
Publié: 11 Nov 2003, 16:39 |
|
Inscription : 14 Mars 2002, 13:44 Message(s) : 436
|
Dans ce cas, dans le formulaire les textbox doivent avoir des noms uniques, ex: deavnt, derriere etc...
Dans la partie qui traite l'upload, va falloir traiter chaque textbox indépendemment:
Code : Pour la première image.... if ($_POST) { if (trim($_FILES['devant']['name'])!="") { if ($_FILES['devant']['size'] > $maxbytes) { echo '<center><br>Le fichier est plus grand que la limite permise de:<b>'." ".$maxbytesk; echo '<br><br><br><br><a href="upload.php">Page précédente</a>'; exit; } if (!in_array($_FILES['devant']['type'][$i],$imgarray)){ echo '<center><br>Mauvais type de fichier!!'." ".' Veuillez charger seulement des fichiers de type .JPG.<br><br>Nom de fichier:'." ".'<b>'.$_FILES['devant']['name']; echo '<br><br><br><br><a href="upload.php">Page précédente</a>'; exit; } $nouveau_nom = ereg_replace(" ","",$_FILES['devant']['name']); $newfile = $uploaddir.$nom_unique."_".$nouveau_nom; move_uploaded_file($_FILES['devant']['tmp_name'], $newfile); echo $nouveau_nom."<br>"; } Ensuite la même chose pour les autres images... Après les sections d'upload vous faites la requête qui envoit chaque image dans son champ correspondant de l'enregistrement Mais je dis ça sous toute réserve, je n'ai pas eu le temps de le tester!! Si jamais vous n'avez pas la réponse ce soir, je ferai des tests plus en profondeur!
|
|
| Haut |
|
 |
|
docemmet
|
Publié: 11 Nov 2003, 17:14 |
|
 |
| Régulier |
 |
Inscription : 05 Fév 2002, 22:00 Message(s) : 489
|
bon, ca me semblait logique... mais j'ai tjrs ceci comme erreur:
Citer: Mauvais type de fichier!! Veuillez charger seulement des fichiers de type .JPG.
Nom de fichier: 11.jpg
Voici donc le code de upload_results.php
Code : <?php $j = 0; $maxbytes = "400000"; $maxbytesk = "400k"; $uploaddir = 'images/'; $nom_unique = date("mdy"); $imgarray = array("image/pjpeg", "image/jpeg", "image/gif", "image/jpe", "image/jpg", "image/png");
if ($_POST) { if (trim($_FILES['salon_1']['name'])!="") { if ($_FILES['salon_1']['size'] > $maxbytes) { echo '<center><br>Le fichier est plus grand que la limite permise de:<b>'." ".$maxbytesk; echo '<br><br><br><br><a href="upload.php">Page précédente</a>'; exit; } if (!in_array($_FILES['salon_1']['type'][$i],$imgarray)) { echo '<center><br>Mauvais type de fichier!!'." ".' Veuillez charger seulement des fichiers de type .JPG.<br><br>Nom de fichier:'." ".'<b>'.$_FILES['salon_1']['name']; echo '<br><br><br><br><a href="upload.php">Page précédente</a>'; exit; } $nouveau_nom = ereg_replace(" ","",$_FILES['salon_1']['name']); $newfile = $uploaddir.$nom_unique."_".$nouveau_nom; move_uploaded_file($_FILES['salon_1']['tmp_name'], $newfile); echo $nouveau_nom."<br>"; }
if (isset($j)&&$j>0) { print '<br><center>Les fichiers ont été téléchargés!</center><br>'; } } ?>
Ensuite, voici mon form Code : <form name="form1" method="post" action="upload_results.php" enctype="multipart/form-data"> <table width="500" border="0" cellspacing="0" cellpadding="5"> <tr> <td><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Salon 1 </font></b></td> <td> <input type="file" name="salon_1"> </td> </tr><tr> <td><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2"></font> </b></td> <td> <input type="hidden" name="submitted" value="true"> <input type="submit" name="Envoyer" value="Submit"> </td> </tr> </table> </form>
_________________ -------------------
Mathieu Lessard
"Toute grande guerre se gagne d'abord par de petits coups d'épée"
|
|
| Haut |
|
 |
|
DolGuldur
|
Publié: 11 Nov 2003, 17:21 |
|
Inscription : 14 Mars 2002, 13:44 Message(s) : 436
|
Enlève le [$i] de cette ligne:
Code : if (!in_array($_FILES['salon_1']['type'][$i],$imgarray))
|
|
| Haut |
|
 |
|
docemmet
|
Publié: 11 Nov 2003, 17:23 |
|
 |
| Régulier |
 |
Inscription : 05 Fév 2002, 22:00 Message(s) : 489
|
merci, je venais de trouver, j'allais t'envoyer le message quand j'ai entendu mon outlook me signifier ton message
Merci beaucoup beaucoup beaucoup
Mathieu
_________________ -------------------
Mathieu Lessard
"Toute grande guerre se gagne d'abord par de petits coups d'épée"
|
|
| Haut |
|
 |
|
docemmet
|
Publié: 11 Nov 2003, 21:00 |
|
 |
| Régulier |
 |
Inscription : 05 Fév 2002, 22:00 Message(s) : 489
|
Salut, je voulais simplifier mon code un peu. J'ai donc imaginé prendre le code que tu m'as envoyé, et en faire une fonction.
Voici donc mon code:
Code : <?php $i = 1; $j = 0; $maxbytes = "400000"; $maxbytesk = "400k"; $uploaddir = 'images/'; $nom_unique = date("mdy"); $heure = date("Gis"); $imgarray = array("image/pjpeg", "image/jpeg", "image/gif", "image/jpe", "image/jpg", "image/png");
function upload_image($champ, $query, $indicatif) { if ($champ=="") { echo "Le champ $champ ne contenait rien"; } else { if (trim($_FILES[$champ]['name'])!="") { if ($_FILES[$champ]['size'] > $maxbytes) { echo '<center><br>Le fichier est plus grand que la limite permise de:<b>'." ".$maxbytesk; echo '<br><br><br><br><a href="upload.php">Page précédente</a>'; exit; } if (!in_array($_FILES[$champ]['type'],$imgarray)) { echo '<center><br>Mauvais type de fichier!!'." ".' Veuillez charger seulement des fichiers de type .JPG.<br><br>Nom de fichier:'." ".'<b>'.$_FILES[$champ]['name']; echo '<br><br><br><br><a href="upload.php">Page précédente</a>'; exit; } $nouveau_nom = ereg_replace(" ","",$_FILES[$champ]['name']); $newfile = $uploaddir.$nom_unique."_".$heure."_$indicatif_".$nouveau_nom; move_uploaded_file($_FILES[$champ]['tmp_name'], $newfile); echo "$query"; } } }
// ici je call ma function pour uploader l'image du champ "avant" upload_image("avant_1", "test", "2");
?>
Le problème est que ca marche pas... évidemment, mes connaissances ne sont pas très poussée, donc il se peut qu'il soit tout simplement impossible de faire une function avec toncode....
Mais sinon, tu peux m'indiquer où est le problème? Tu vois, j'ai 15 fichiers à uploader, donc... ca couperait le code de beaucoup...
J'ai essayé d'enlever le ' ' dans les [ ], mais ca n'a rien changé, même que j'avais l'Erreur: Le fichier est plus grand que la limite permise de:
Merci
Mathieu
_________________ -------------------
Mathieu Lessard
"Toute grande guerre se gagne d'abord par de petits coups d'épée"
|
|
| Haut |
|
 |
|
docemmet
|
Publié: 11 Nov 2003, 21:03 |
|
 |
| Régulier |
 |
Inscription : 05 Fév 2002, 22:00 Message(s) : 489
|
|
bon, on dirait qu'en t'exposant le problème, je trouve la solution... mon problème était que mes variable était en dehors de la function....
Merci beaucoup
Mathieu
_________________ -------------------
Mathieu Lessard
"Toute grande guerre se gagne d'abord par de petits coups d'épée"
|
|
| Haut |
|
 |
|
Page 1 sur 1
|
[ 15 message(s) ] |
|
Qui est en ligne ? |
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 6 invité(s) |
|
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum
|
|
|
|