Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1131 connectés 

  FORUM HardWare.fr
  Programmation

  [php] upload d'un nombre variable de fichiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php] upload d'un nombre variable de fichiers

n°63627
Deadog
Dain Bramaged
Posté le 06-10-2001 à 00:05:58  profilanswer
 

voila, je voudrait faire un script qui permet d'uploader un nombre de fichiers variable.
 
En clair, le gars arrive sur une page, marque dans un input text un certain nombre (au hasard 7), clique sur le bouton et est redirigé vers une page avec 7 formulaire d'upload, et bien sur de pouvoir récupéré ces fichiers avec du php
 
 
d'habitude pour mes upload j'utilise ce script :
 
<INPUT NAME="userfile" TYPE="file" size="20">
<input type="hidden" name="action" value="add">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="10000000">

(pour la parti HTML)
 
 $destination="/home/www/upload";
  if ($userfile=="none" ) {
    echo "<h2><font face=arial>Vous n'avez pas sélectionné de fichier.</font></h2>";
  }
  if ($userfile!="none" && $userfile_size!=0) {
    $userfile=stripslashes($userfile);
    if (!copy($userfile, "$destination/$userfile_name" )) {
      echo "<br>Probleme de transfert !<br>";
      exit();
    }
  }

(pour le php)
 
 
mon script pour généré un certain nombre de formulaire d'upload :
 $i=1;
  while($i<=$nbpic) {
 
?>
 
<INPUT NAME="userfile" TYPE="file" size="20">
<input type="hidden" name="action" value="add">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="10000000"><BR><BR>
 
<?php
 
  $i++;
  }

 
 
Le problème vient du faite de récupéré mes fichiers
 
je pensais utiliser une boucle avec comme limite le nombre de formulaire mais dans ce cas la faut que je donne comme nom name="userfile<?php echo $i ?>" dans mon INPUT file, mais quand je vais récupéré mes fichiers dans la parti php il me faut les variables userfile1, userfile2, userfile3, userfile4, ... or je me vois mal faire $userfile$i :pt1cable:  
 
 
 
zavez pas une idée :cry:

mood
Publicité
Posté le 06-10-2001 à 00:05:58  profilanswer
 

n°63634
youdontcar​e
Posté le 06-10-2001 à 00:20:50  profilanswer
 

utilise $$ :
 
for ($i=0; $i<$numFiles; $i++)
{
  $fileName = 'userfile' . $i;
  $ulFileName  = 'userfile' . $i . '_name';
  // tu accèdes alors à la variable par $$fileName
  // donc un truc comme ...
  copy($$fileName, $$ulFileName);
   
}

n°63638
Deadog
Dain Bramaged
Posté le 06-10-2001 à 00:33:09  profilanswer
 

merçi :jap: vé essayer demain ;)
 
 
 :jap:  :jap:  :jap:

n°63704
Freekill
Electron libre…
Posté le 06-10-2001 à 15:05:29  profilanswer
 

Je viens de faire exactement la même chose...
 
Si tu veux mes codes...

n°63705
Deadog
Dain Bramaged
Posté le 06-10-2001 à 15:14:38  profilanswer
 

pkoi pas :) pke la le miens y merde :(
 
$destination="/home/upload";
  $i=1;
  while($i<=$nbpic) {
    $usfl="userfile".$i;
    $nmusfl="userfile".$i."_name";
    $szusfl="userfile".$i."_size";
    if ($$usfl=="none" ) {
      echo "<h2><font face=arial>Vous n'avez pas sélectionné de fichier.</font></h2>";
    }
    if ($$usfl!="none" && $$szusfl!=0) {
      $$usfl=stripslashes($$usfl);
      $final="$destination/$idart";
      $final.="_$idpage";
      $final.="_$i.jpg";
      echo "final : $final";
      if (!copy($$usfl, "$final" )) {
        echo "<br>Probleme de transfert !<br>";
        exit();
      }else{
        echo "<a name=\"deb\"></a>\n<CENTER>\n<H3><b>Les fichiers ont correctement étais u/l</b></H3>\n</CENTER>";
      }
    }
  }

 
 
il u/l bien le 1er fichier (une image pour le moment, je ferais le script d'identifacation des fichiers plus tard) mais après il foire (il fait même planté tous l'ordi avec ie :pt1cable:  :gun: )
 
 
 :??:  :??:  :??:  
 
 
mais j'suis pas contre que tu me passe ton code :jap:  :D

n°63706
Freekill
Electron libre…
Posté le 06-10-2001 à 16:05:13  profilanswer
 

Dans une première page l'utilisateur est invité à choisir un nom générique de fichiers ($nom) et le nombre de fichiers du groupe ($nbr).
 
Ensuite ces informations sont envoyées à une deuxième page qui génère dynamiquement le formulaire nécéssaire et dont voici le code:
 

Code :
  1. <FORM NAME="upload" ENCTYPE="multipart/form-data" ACTION="photos_post.php3" METHOD=POST>
  2. <input type="hidden" name="nbr" value="<?PHP echo $nbr ?>">
  3. <input type="hidden" name="nom" value="<?PHP echo $nom ?>">
  4.   <table cellspacing="0" width="100%" align="center">
  5. <?
  6. for ($i=0;$i<$nbr;$i++)
  7. {
  8. $n = $i+1;
  9. $bloc = $bloc."
  10. <tr>
  11. <td align=\"center\" class=texte width=\"30%\">Image n°$n : <BR>
  12. <input type=\"File\" name=\"userfile[]\" size=\"50\" maxlength=\"255\" Class=textzone>
  13. </tr>";
  14. }
  15. echo $bloc;
  16. ?>
  17.   </table>
  18. </form>


 
Une fois qu'il a sélectionné ses fichiers, le tout est envoyé à cette page:
 

Code :
  1. <?
  2. //traite les infos des fichiers
  3. for ($i=0;$i<$nbr;$i++)
  4. {
  5. $n = $i+1;
  6. // récupération infos fichiers uploadé
  7. $userfile = $HTTP_POST_FILES['userfile']['name'][$i];
  8. $location = $HTTP_POST_FILES['userfile']['tmp_name'][$i];
  9. // variables répertoires temporaire et final
  10. $tmpdir = "./tmp/";
  11. $dest = "./monrep/";
  12. if($userfile[1] and is_uploaded_file($location))
  13. {
  14.  // copie le fichier uploadé dans un rep temporaire
  15.  move_uploaded_file($location, "$tmpdir$nom$n.jpg" );
  16.  // effectue une série de tests sur le fichier pour voir si les conditions sont remplies
  17.  // si ce n'est pas le cas, le fichier est effacé
  18.   if (macondition) {
  19. (tu n'as pas besoin de ça)
  20.   }
  21.  // Si le résultat des tests est positif, le fichier est déplacé au bon endroit
  22.  else
  23.  {
  24.   // creation de l'image normale
  25.   copy("$tmpdir$nom$n.jpg", "$dest$nom$n.jpg" ) or die("" );
  26.   // efface le fichier temporaire
  27.   unlink("$tmpdir$nom$n.jpg" );
  28.  }
  29. }
  30. // Vérifie que le fichier existe
  31. else
  32. {
  33. die ("Le fichier n°$n n'a pas été spécifiée!" );
  34. }
  35. }
  36. ?>


 
A noter que ce script n'est fait que pour des .jpeg
 
 :hello:

 

[edtdd]--Message édité par Freekill--[/edtdd]

n°63708
Freekill
Electron libre…
Posté le 06-10-2001 à 16:13:51  profilanswer
 

Ah oui, j'oubliais la théorie:
 
Lorsque l'on veut uploader plusieurs fichiers avec un seul formulaire, le principe est de travailler avec le même nom (ex. "userfile" ) pour tous les inputs file.
 
Ensuite l'$userfile se comportera comme une array, et on l'interrogera comme telle (premier fichier = $userfile[0], 2ème fichier = $userfile[1], etc.)

n°63713
Deadog
Dain Bramaged
Posté le 06-10-2001 à 16:52:54  profilanswer
 

Mais qu'est ce que je suis kon :pt1cable:  
 
 
j'ai complétement oublié d'incrémenté ma valeur $i :D  
 
 
revoila mon script corrigé (plus qql truc modifié ;)) :
 
$destination="/home/www/upload";  
 $i=1;  
 while($i<=$nbpic) {  
   $usfl="userfile".$i;  
   $nmusfl="userfile".$i."_name";  
   $szusfl="userfile".$i."_size";  
   if ($$usfl=="none" ) {  
     echo "<h2><font face=arial>Vous n'avez pas sélectionné de fichier.</font></h2>";  
   }  
   if ($$usfl!="none" && $$szusfl!=0) {  
     $$usfl=stripslashes($$usfl);  
     $final="$destination/$idart";  
     $final.="_$idpage";  
     $final.="_$i.jpg";
     if (!copy($$usfl, "$final" )) {  
       echo "<br>Probleme de transfert !<br>";  
       exit();  
     }
   }
   $i++;  
 }  
echo "<a name=\"deb\"></a>\n<CENTER>\n<H3><b>Les fichiers ont correctement étais u/l</b></H3>\n</CENTER>";

 
 
j'ai essayé avec les arrays mais le script merdouillé :( alors j'ai pas cherché plus loin :D me contente de ce que j'ai fait :)
 
 
 
merçi quand même :hello:  ;)

 

[edtdd]--Message édité par Deadog--[/edtdd]

n°63717
youdontcar​e
Posté le 06-10-2001 à 17:01:01  profilanswer
 

Freekill a écrit a écrit :

Ensuite l'$userfile se comportera comme une array, et on l'interrogera comme telle (premier fichier = $userfile[0], 2ème fichier = $userfile[1], etc.)


haaa c'est trop cool ça. ça m'a inspiré pour tenter autre chose : je ne savais pas comment accéder, en javascript, à deux divs ayant le même nom (bon ok c'est pas très utile, c'est juste pour la forme).
 
he bien pareil, par un array :
 
<div id='myDiv'></div>
<div id='myDiv'></div>
 
<script>
myDiv[0].innerHTML = 'div1';
myDiv[1].innerHTML = 'div2';
 
:love: :D

n°63720
youdontcar​e
Posté le 06-10-2001 à 17:04:40  profilanswer
 

Deadog a écrit a écrit :

Mais qu'est ce que je suis kon :pt1cable:  
j'ai complétement oublié d'incrémenté ma valeur $i :D


:D
 
c'est quand même mieux d'utiliser un for dans ce cas :
 
for ($i=1; $i<=$nbpic; $i++)
{
  // ton code ...
}

mood
Publicité
Posté le 06-10-2001 à 17:04:40  profilanswer
 

n°63721
Deadog
Dain Bramaged
Posté le 06-10-2001 à 17:07:55  profilanswer
 

je sais mais en ce moment je suis dans ma période while :D

n°63723
Freekill
Electron libre…
Posté le 06-10-2001 à 17:11:14  profilanswer
 

moi aussi je dois me forcer pour utiliser les for.
 
je sais pas pourquoi mais instinctivement je mets des while.

n°63724
Deadog
Dain Bramaged
Posté le 06-10-2001 à 17:12:54  profilanswer
 

pê pke on sait incontionnelement qu'un while va plus vite qu'un for :??:  :D

n°63725
youdontcar​e
Posté le 06-10-2001 à 17:16:45  profilanswer
 

Deadog a écrit a écrit :

pê pke on sait incontionnelement qu'un while va plus vite qu'un for :??:  :D  



:lol:
 
quand je connais toujours le nombre d'éléments à traiter, j'utilise un for
sinon, un while (genre recherche dans une liste chaînée).
 
l'abus de while entraîne des bugs comme l'oubli de l'incrémentation de l'index (ça m'arrive aussi après des années de pratique :D)

 

[edtdd]--Message édité par youdontcare--[/edtdd]

n°63727
Freekill
Electron libre…
Posté le 06-10-2001 à 17:22:34  profilanswer
 

Deadog a écrit a écrit :

pê pke on sait incontionnelement qu'un while va plus vite qu'un for :??:  :D  




 
Tu es sûr de ça?
 
Beaucoup plus rapide?

n°63728
Deadog
Dain Bramaged
Posté le 06-10-2001 à 17:26:25  profilanswer
 

bcp, je sais pas, m'étonnerai même, mais je me souviens avoir lu je sais pas trop où que niveau assembleur un while allez plus vite qu'un for...
 
 
youdontcare > tous pareil :p


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [php] upload d'un nombre variable de fichiers

 

Sujets relatifs
[DELPHI] copie de fichiers et répertoires[C++] VISUAL: Listbox de taille variable??
[php] Upload et Open_BaseDir restriction[PHP] sessions : duree de vie des fichiers sur le serveur ...
[HTML] Mettre un nombre ds un champs?Au sujet de l en tete des fichiers ISO 9660
[uptime] quelle variable sous dos?faire un diff entre 2 fichiers sources sous Windows
[ASP] Upload?Javascript dans PHP : comment recuperer une variable de session ?
Plus de sujets relatifs à : [php] upload d'un nombre variable de fichiers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR