Nous sommes actuellement le 10 Juil 2026, 15:27

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 15 message(s) ] 
Auteur Message
MessagePublié: 11 Nov 2003, 12:23 
Hors-ligne
Régulier
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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2003, 12:40 
Hors-ligne
Régulier
Régulier
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2003, 12:44 
Hors-ligne
Régulier
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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2003, 12:46 
Hors-ligne
Régulier
Régulier
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2003, 12:49 
Hors-ligne
Régulier
Régulier
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2003, 12:50 
Hors-ligne
Régulier
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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2003, 15:57 
Hors-ligne
Régulier
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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2003, 16:21 
Hors-ligne
Régulier
Régulier
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2003, 16:24 
Hors-ligne
Régulier
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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2003, 16:39 
Hors-ligne
Régulier
Régulier
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2003, 17:14 
Hors-ligne
Régulier
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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2003, 17:21 
Hors-ligne
Régulier
Régulier
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2003, 17:23 
Hors-ligne
Régulier
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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2003, 21:00 
Hors-ligne
Régulier
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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2003, 21:03 
Hors-ligne
Régulier
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
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 15 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 0 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

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site