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

  FORUM HardWare.fr
  Programmation
  PHP

  upload un fichier et choisirs le nom qu'il aura sur le serveur !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

upload un fichier et choisirs le nom qu'il aura sur le serveur !

n°1474165
allsnow
ALLSNOW
Posté le 12-11-2006 à 14:34:18  profilanswer
 

Bonjour à tous !
 
J'ai fait mon code php pour upload un fichier sur mon site web jusqu'a mon serveur !
Et maintenant je voudrais imposer le nom du fichier quand il arrive sur le serveur !
 
Exemple :  
 
Une personne envoi une photo nommé APN022.jpg (sur son PC) et je voudrai que quand il l'envoi elle est un nom précis !
 
 Comment faire ?
 
 
Voici mon code :  

Code :
  1. <html>
  2. <head><title>Envoi de fichier</title></head>
  3. <body>
  4. <?php
  5. if (!isset($_POST['MAX_FILE_SIZE'])) { /* si le formulaire a été validé */
  6. ?>
  7. <form enctype="multipart/form-data" action="" method="post">
  8.   <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
  9.   Envoyez ce fichier : <input name="userfile" type="file" />
  10.   <input type="submit" value="Envoyer le fichier" />
  11. </form>
  12. <?php
  13. } else {
  14. // mettre en commentaire la ligne inutile (la premiere est pour moi, en local)
  15. // $uploaddir = $_SERVER['DOCUMENT_ROOT'] . '/allsnow/uploads/';
  16. $uploaddir = '/mnt/111/sdc/8/4/allsnow/div/';
  17. // créée le dossier de destination s'il est inexistant
  18. if (!(@opendir($uploaddir))) mkdir($uploaddir);
  19. $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
  20. if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
  21.  echo "Le fichier est valide, et a été téléchargé avec succès.\n";
  22. } else {
  23.  echo "Une erreur est survenue durant l'envoi du fichier : Le fichier doit être plus petit que 2 Mo sinon sa ne marche pas !<br />\n";
  24. }
  25. }
  26. ?>
  27. </body>


 
Merci a vous !


Message édité par allsnow le 12-11-2006 à 14:35:06
mood
Publicité
Posté le 12-11-2006 à 14:34:18  profilanswer
 

n°1474167
nargy
Posté le 12-11-2006 à 14:39:06  profilanswer
 

où est le problème?
http://fr2.php.net/move_uploaded_file


Message édité par nargy le 12-11-2006 à 14:41:18
n°1474169
allsnow
ALLSNOW
Posté le 12-11-2006 à 14:41:29  profilanswer
 

"move_uploaded_file", c'est pour le deplacer ! Moi je voudrai lui atribuer un nom par défaut !

n°1474170
nargy
Posté le 12-11-2006 à 14:44:20  profilanswer
 

ben.. en le déplaçant tu lui donne aussi un nom....

Code :
  1. function get_unique_file_name($path)
  2. {
  3.   while(file_exists($path))
  4.   {
  5.    $parts=explode(".",$path);
  6.    if (count($parts)<=1)
  7.    {
  8.      $path=$path.".001";
  9.    }
  10.    else
  11.    {
  12.      $num=$parts[count($parts)-2];
  13.      if (!ereg("^[0-9]+\$",$num))
  14.      {
  15.        $parts2=array();
  16.        for($i=0;$i<count($parts)-1;$i++)
  17.        {
  18.          $parts2[]=$parts[$i];
  19.        }
  20.        $parts2[]="001";
  21.        $parts2[]=$parts[count($parts)-1];
  22.        $path=implode(".",$parts2);
  23.      }
  24.      else
  25.      {
  26.        $parts2=array();
  27.        for($i=0;$i<count($parts)-2;$i++)
  28.        {
  29.          $parts2[]=$parts[$i];
  30.        }
  31.        $parts2[]=sprintf("%03d",($num+1));
  32.        $parts2[]=$parts[count($parts)-1];
  33.        $path=implode(".",$parts2);
  34.      }
  35.    }
  36. }
  37. return $path;
  38. }
  39. $uploadfile=get_unique_file_name($uploaddir.$HTTP_POST_FILES['userfile']['na
  40. me']);

n°1474171
allsnow
ALLSNOW
Posté le 12-11-2006 à 14:56:46  profilanswer
 

Dsl mais je debut !  
 
Je l'insere ou le code ?
 
Merci  

n°1474243
nargy
Posté le 12-11-2006 à 20:24:15  profilanswer
 

De la ligne 1 à 38, la fonction get_unique_file_name($path) doit être définie au début du script, elle prends en argument un nom de fichier, et si il existe déjà renvoie le nom de fichier numéroté, sinon elle renvoie le nom donné en paramètre.
Par exemple:
test.jpg -> test.jpg
test.jpg -> test.001.jpg
test.jpg -> test.002.jpg
 
Les lignes 40/41 utilisent un répertoire $uploaddir dans lequel le serveur apache a les droits décriture, ajoutent le nom du fichier donné par l'utilisateur, et appellent la fonction get_unique_file_name pour obtenir un nom de fichier qui n'existe pas. Reste à appeler move_uploaded_file() de PHP vers $uploadfile pour déplacer vers le répertoire $uploaddir en renommant le fichier uploadé avec un nom de fichier unique.
Si ça ne convient pas, tu peut remanier le code pour seulement numéroter les fichiers.
Note que tu dois avoir les droits en écriture sur le répertoire vers lequel tu stocke les fichiers.

n°1474809
allsnow
ALLSNOW
Posté le 13-11-2006 à 18:43:02  profilanswer
 

Ok, j'ai compris la fonction de chacun !
 
Es que tu peux me montré ou j'insère la fonction get_unique_file_name dans mon code, pour donné un nom précis au fichier uploadé.

Code :
  1. <html>
  2. <head><title>Envoi de fichier</title></head>
  3. <body>
  4. <?php
  5. if (!isset($_POST['MAX_FILE_SIZE'])) { /* si le formulaire a été validé */
  6. ?>
  7. <form enctype="multipart/form-data" action="" method="post">
  8.   <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
  9.   Envoyez ce fichier : <input name="userfile" type="file" />
  10.   <input type="submit" value="Envoyer le fichier" />
  11. </form>
  12. <?php
  13. } else {
  14. // mettre en commentaire la ligne inutile (la premiere est pour moi, en local)
  15. // $uploaddir = $_SERVER['DOCUMENT_ROOT'] . '/allsnow/uploads/';
  16. $uploaddir = '/mnt/111/sdc/8/4/allsnow/flo/';
  17. // créée le dossier de destination s'il est inexistant
  18. if (!(@opendir($uploaddir))) mkdir($uploaddir);
  19. $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
  20. if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
  21.  echo "Le fichier est valide, et a été téléchargé avec succès.\n";
  22. } else {
  23.  echo "Une erreur est survenue durant l'envoi du fichier : Le fichier doit être plus petit que 2 Mo sinon sa ne marche pas !<br />\n";
  24. }
  25. }
  26. ?>
  27. </body>


 
Sinon j'ai les droits d'écriture !  
Disons que mon code marche comme il est, mais que je voudrais rajouter une fonction en plus pour que quand un fichier est uploadé il est un noms que je déciderais !
 
 
Merci de ton aide nargy


Message édité par allsnow le 13-11-2006 à 18:46:49
n°1474891
nargy
Posté le 13-11-2006 à 21:26:07  profilanswer
 

Tu dois insérer la fonction au tout début (comme toute fonction, il vaut mieux la déclarer avant toute chose, et entre <?php ?> puisqu'on est en PHP).
La ligne 21 est à remplacer par la ligne 40 du code que j'ai posté.
 
Tu es bien sympathique, mais il ne me semble pas que tu ais vraiment compris ce que tu fais. Je te conseille vivement de lire les premiers chapitres de la documentation PHP sur http://php.net/, celà t'éclairera certainement sur de nombreux points.
Enfin, bonne chance :)

n°1474942
allsnow
ALLSNOW
Posté le 13-11-2006 à 22:42:50  profilanswer
 

Ok, je vais mit mettre un peu plus sérieusement au PHP, je suis motivé quand je vois tout ce qu'on peut faire avec !
 
Mais sinon pour mon code ! Vu qu'il est presque fini, tu peux me dire une fois que j'ai remplacé les deux lignes, ou je mets le nom que je veux qu’il ait une fois uploadé !
 
Merci beaucoup de ton aide !

n°1474963
nargy
Posté le 13-11-2006 à 23:04:40  profilanswer
 

Quoi??? quoi!
Le nom que tu veux... Pouquoi, au fait suis-je le Seul à répondre à.........
 
Mouais, bref....$$$
 
Qu'est-ce-que tu veux? au fait?
 
10 internautes se connectent sur ton site... admettons, ils choisissent tous de te refiler leur photo où on voit clairement leurs dents cariées, les poils sous les bras des nanas, et en plus ils font des grimaces. C rigolo.
 
Manque de bol, ils ont tous appelé leur photo <<photo de moi.jpg>>, sauf une qui a cru bon de faire de l'humour: <<photo de moite.jpg>>.
 
Sur ton site, tu dois enregistrer ces photos. Le problème, c'est que les photos ont tous le même nom, sauf une.
 
Tu désire donc que toutes ces photos aient un nom différent, car ton désir le plus profond est de pouvoir différencier ces photos. Pour pouvoir dire: Oui, Anne a des poils sous les bras, Francis a les dents cariées, et ma mère a des gros lolos.
 
Bref, deux solutions:

  • Primo, tu garde le nom originel de la photo, MAIS si deux photos on le même nom, tu les numérote (<<photo de moi.jpg>>, <<photo de moi.001.jpg>>, <<photo de moite.jpg>> )
  • Secundo, tu te fiche du nom originel de la photo, et tu les numérote: <<001.jpg>>, <<002.jpg>>, <<003.jpg>>
  • Tertio, tu ne comprends quedalle à ce que je raconte, et de toute façon t'en a rien a foutre puisque tu pense que je finirais par te refiler le bon code que tu pourra copié/collé.


Primo: je t'ai filé le code, je peux pas faire mieux, l'atelier copié/collé commence demain à 14h30,
Secundo: démerde toi pour adapter le code que je t'ai filé,
Tertio: ... heu ... t'es pas sur le bon forum!
 
Ma poule viens juste de me glisser à l'oreille:

Code :
  1. code code code codé


PS: marre :O


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

  upload un fichier et choisirs le nom qu'il aura sur le serveur !

 

Sujets relatifs
simulation d'une file d'attente avec un serveurServeur pour surveillance de process
Comment trouvé le serveur mySQL chez free ?lecture fichier binaire de double
Ecrire un double dans un fichierChanger les droits d'un fichier
Conseils pour serveur calcul maths en CTeste si une ligne est vide: ds un fichier Word
[PHP/SQLITE] Lecture des données dans un fichier .db[résolu] Prendre un nom de fichier + répertoire en macro pour excel
Plus de sujets relatifs à : upload un fichier et choisirs le nom qu'il aura sur le serveur !


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