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

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Upload de fichier , pb avec la gestion du repertoire ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Upload de fichier , pb avec la gestion du repertoire ?

n°282180
Randy---
"Un jour elle sera mienne..."
Posté le 08-01-2003 à 20:12:45  profilanswer
 

Salut à tous, j'ai un script php qui permet d'uploader des fichiers mais j'ai qques problemes :  
voilà les scripts (merci à phpfacile ;)
 
filepuload.html

Code :
  1. <html>
  2.     <body>
  3.         <form enctype="multipart/form-data" action="fileupload.php" method="post">
  4.             <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
  5.             Transfère le fichier <input type="file" name="monfichier" />
  6.             <input type="submit" />
  7.         </form>
  8.     </body>
  9. </html>


 
et voici fileupload.php :

Code :
  1. <html>
  2. <body>
  3. <?php
  4.     $repertoireDestination = "img/";
  5.     $nomDestination        = $_FILES["monfichier"]["name"];
  6.     // Pour raison de sécurité nous ajouterons aux fichiers
  7.     // portant une extension .php .php3, l'extension .txt
  8.     if (eregi(".php", $nomDestination)) {
  9.         $nomDestination .= ".txt";
  10.     }
  11.    
  12.     if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
  13.         if (rename($_FILES["monfichier"]["tmp_name"],
  14.                    $repertoireDestination.$nomDestination)) {
  15.             echo "Le fichier temporaire ".$_FILES["monfichier"]["tmp_name"].
  16.                  " a été déplacé vers ".$repertoireDestination.$nomDestination;
  17.         } else {
  18.             echo "Le déplacement du fichier temporaire a échoué".
  19.                  " vérifiez l'existence du répertoire ".$repertoireDestination;
  20.        }         
  21.     } else {
  22.        echo "Le fichier n'a pas été uploadé (trop gros ?)";
  23.     }
  24. ?>
  25. </body>
  26. </html>


 
Et il me met l'erreur : Le fichier n'a pas été uploadé (trop gros ?).
Mon dossier img se trouve pourtant bien dans le meme repertoire que ces deux scripts. Le truc, c'est que (je travaille avec easyphp 1.6) lorsque je v dans les propriétés de "img", il me dit qu'il est en lecture seule. Et j'ai beau décocher, ca se recoche toujours automatiquement....
A moins que le probleme ne vienne pas de là  :heink:  :heink:  
 
Pitié aidez moi !!!   :cry:  :pt1cable:  :pt1cable:


Message édité par Randy--- le 08-01-2003 à 20:15:08
mood
Publicité
Posté le 08-01-2003 à 20:12:45  profilanswer
 

n°282477
beleg
黑社會
Posté le 09-01-2003 à 12:55:44  profilanswer
 

Code :
  1. if (is_uploaded_file($_FILES["monfichier"]["tmp_name"]))
  2.       {
  3.         //blablabla
  4.       }
  5.       else
  6.       {
  7.            echo "Le fichier n'a pas été uploadé (trop gros ?)";
  8.       }


 
si tu obtiens le message d'erreur, c'est que le probleme vient du repertoire temporaire ou de l'upload en lui meme (taille du fichier / droit d'ecriture / repertoire mal défini ....)

n°282497
jolly
Posté le 09-01-2003 à 13:13:10  profilanswer
 

regarde dans la page phpinfo, il existe une limite de taille maxi de fichier ...
t'heberge ou sinon ?? chez toi ?

n°282503
Randy---
&#034;Un jour elle sera mienne...&#034;
Posté le 09-01-2003 à 13:15:45  profilanswer
 

c bon, pb résolu, c t juste un probleme de taille de fichier.  :ange:  
merci pour les réponses  :)

n°282607
Randy---
&#034;Un jour elle sera mienne...&#034;
Posté le 09-01-2003 à 15:30:11  profilanswer
 

bon j'ai fait mon script php pour l'upload avec :
-test de type de fichier et acceptation seulement des jpg ou gif.
-test du poids du fichier
-test de la larguer de l'image.
 
Tout marche nickel en local, mais en ligne (hebergement ovh), il chie dans la colle....Le script marche bien puisqu'il detecte lorsque le fichier ne correspond pas au bon format/taille/poids.
Mon algo prends le fichier temporaire et le renomme dans un dossier spécifié. Mais là :  

Code :
  1. Warning: rename() failed (No such file or directory)


pourtant en ligne le dossier spécifié existe bien.. j'ai fait un chmod 777 mais forcément le dossier se remet automatiquement en 755.... normal ? ou le probleme vient d'ailleurs ?  :heink:

n°282728
beleg
黑社會
Posté le 09-01-2003 à 17:18:26  profilanswer
 

je viens duploader sur ovh :
 

Code :
  1. if ($fichier_size != 0)
  2. {
  3.  $nom = Space_escape($fichier_name);
  4.  copy($fichier, "./bannierespub/".$nom);
  5. }


 
sommaire, ( faut que je reecrive ca en php 4.2 ) mais aucun probleme de droit, et comme c pas mon serveur, je nai fait changement, juste créer mon repertoire.

n°282730
Randy---
&#034;Un jour elle sera mienne...&#034;
Posté le 09-01-2003 à 17:22:23  profilanswer
 

donc si c pas ovh comment ca se fait que ca marchait nickel en local et pas chez eux ???
y'a un truc ki m'echappe là , t'aurais pas une piste à me donner , vers où chercher le bug ?? :heink:

n°282732
beleg
黑社會
Posté le 09-01-2003 à 17:30:36  profilanswer
 

le rename ?
 
et move_uploaded_file .. je connais pas.
je vais refaire mes quelques lignes de php demain je pense pr les rendre plus conforme avec un qqchose ressemblant au tien.

n°282862
Randy---
&#034;Un jour elle sera mienne...&#034;
Posté le 09-01-2003 à 19:04:05  profilanswer
 

si tu veux je te propose un deal : je mets mes lignes sur le post et en retour tu m'aides un peu sur mon probleme ?  :D

n°282890
beleg
黑社會
Posté le 09-01-2003 à 19:25:03  profilanswer
 


jai testé ca :
bannieresub est en 755
c le 240plan de chez OVH
affiche les parametres de rename pr voir si il y a pas une erreur de syntaxe.
 

Code :
  1. // deplacement
  2. if (is_uploaded_file($_FILES["fichier"]["tmp_name"]))
  3. {
  4.      $nom = Space_escape($_FILES["fichier"]["name"]);
  5.      rename($_FILES["fichier"]["tmp_name"], "./bannierespub/".$nom);
  6. }
  7.         // copie
  8. if (is_uploaded_file($_FILES["fichier"]["tmp_name"]))
  9. {
  10.      $nom = Space_escape($_FILES["fichier"]["name"]);
  11.      copy($_FILES["fichier"]["tmp_name"], "./bannierespub/".$nom);
  12. }

mood
Publicité
Posté le 09-01-2003 à 19:25:03  profilanswer
 

n°282970
Randy---
&#034;Un jour elle sera mienne...&#034;
Posté le 09-01-2003 à 20:31:06  profilanswer
 

bon allez zou, voilà mon fileupload.php

Code :
  1. <html>
  2. <body>
  3. <?php
  4.     $repertoireDestination = "img/";
  5.     $nomDestination        = $_FILES["imgevt"]["name"];
  6. {
  7.     if (is_uploaded_file($_FILES["imgevt"]["tmp_name"]))
  8.      {
  9.       $type=$_FILES["imgevt"]["type"];
  10.       if ($type=="image/pjpeg" )
  11.       {
  12.        $size = getimagesize($_FILES["imgevt"]["tmp_name"]);
  13.        if ($size[0] <= 550)
  14.         {
  15.         if (rename($_FILES["imgevt"]["tmp_name"],
  16.                   $repertoireDestination.$nomDestination)) 
  17.                    {
  18.                   print "<CENTER>";
  19.                echo "Le fichier à été téléchargé.";
  20.                print "<BR> Pour inserer cette image dans votre texte, copiez et coller la ligne suivante :<BR>";
  21.    highlight_string("\n <img src='administration/$repertoireDestination$nomDestination'> \n" );
  22.    print "<a href='#' onClick=window.close()>fermer la fenetre</A>";
  23.    print "</CENTER>";
  24.          }
  25.         else
  26.             {
  27.                echo "Le déplacement du fichier temporaire a échoué. Le nom existe peut etre deja.";
  28.                   print "<BR><CENTER><a href='fileupload.html'>revenir au chargement</A><CENTER>";
  29.             }
  30.            }
  31.           elseif ($size[0] > 550)
  32.            {
  33.            print "votre image est trop grande, veuillez la réduire";
  34.            print "<BR><CENTER><a href='fileupload.html'>revenir au chargement</A><CENTER>";
  35.            }
  36.      
  37.          }
  38.          elseif ($type=="image/gif" )
  39.       {
  40.        $size = getimagesize($_FILES["imgevt"]["tmp_name"]);
  41.        if ($size[0] <= 550)
  42.         {
  43.            if (rename($_FILES["imgevt"]["tmp_name"],
  44.                   $repertoireDestination.$nomDestination))
  45.                   {
  46.                   print "<CENTER>";
  47.                echo "Le fichier à été téléchargé.";
  48.                print "<BR> Pour inserer cette image dans votre texte, copiez et coller la ligne suivante :<BR>";
  49.    highlight_string("\n <img src='administration/$repertoireDestination$nomDestination'> \n" );
  50.    print "<a href='#' onClick=window.close()>fermer la fenetre</A>";
  51.    print "</CENTER>";
  52.         }
  53.         else
  54.            {
  55.                echo "Le déplacement du fichier temporaire a échoué. Le nom existe peut etre deja.";
  56.                   print "<BR><CENTER><a href='fileupload.html'>revenir au chargement</A><CENTER>";
  57.            }
  58.            }
  59.            elseif ($size[0] > 550)
  60.            {
  61.            print "votre image est trop grande, veuillez la réduire";
  62.            print "<BR><CENTER><a href='fileupload.html'>revenir au chargement</A><CENTER>";
  63.            }
  64.      
  65.          }
  66.          else
  67.        {
  68.        print "Ce fichier n'est pas une image";
  69.        print "<BR><CENTER><a href='fileupload.html'>revenir au chargement</A><CENTER>";
  70.        }
  71. else
  72. {
  73.  print "fichier trop gros !";
  74.  print "<BR><CENTER><a href='fileupload.html'>revenir au chargement</A><CENTER>";
  75. }
  76.    
  77.  
  78. }     
  79. ?>
  80. </body>
  81. </html>


 
et l'erreur correspondante :

Code :
  1. Warning: rename() failed (Invalid cross-device link) in /home/nomdomaine/www/administration/fileupload.php on line 17


 
et je suis en 60gp sur ovh , et le repertoire img est en 755


Message édité par Randy--- le 09-01-2003 à 20:32:32
n°282972
Randy---
&#034;Un jour elle sera mienne...&#034;
Posté le 09-01-2003 à 20:35:08  profilanswer
 

et je le rappelle : ca marche nickel en local !!!!!  :pt1cable:  :pt1cable:  :pt1cable:  :D  :cry:  :pt1cable:

n°282994
beleg
黑社會
Posté le 09-01-2003 à 21:18:19  profilanswer
 

le code c'est bien gentil, mais ce qui est utile dans le cas présent, c la ligne du rename et ses parametres à l'execution  :o . Le code doit etre pas mal puisque ca semble fonctionner en local, faut se focaliser sur le probleme. Tu tournes en rond avec tes posts.

n°282997
Randy---
&#034;Un jour elle sera mienne...&#034;
Posté le 09-01-2003 à 21:32:17  profilanswer
 

comment je les connais les parametres du rename ?

n°283004
beleg
黑社會
Posté le 09-01-2003 à 21:40:01  profilanswer
 

tu les affiches  :heink:

n°283005
Randy---
&#034;Un jour elle sera mienne...&#034;
Posté le 09-01-2003 à 21:43:42  profilanswer
 

euh moui donc comment je les affiche ?? :sarcastic:

n°283020
beleg
黑社會
Posté le 09-01-2003 à 21:56:00  profilanswer
 


 
echo $_FILES["imgevt"]["tmp_name"];
echo $repertoireDestination.$nomDestination;
 
 [:shakalagoons] fais pas ton  :sarcastic:  
                             

n°283350
beleg
黑社會
Posté le 10-01-2003 à 01:57:15  profilanswer
 


essaie avec copie,
mon test etait biaisé tt a lheure, jai uploadé 2 fois le meme fichier et avec le rename, ca a planté, mais comme le fichier etait deja present, jai cru que cetait bon.  
( mon affichage des erreurs est desactivé)
 
par contre, bien vu :

Code :
  1. // Pour raison de sécurité nous ajouterons aux fichiers  
  2.    // portant une extension .php .php3, l'extension .txt  
  3.    if (eregi(".php", $nomDestination)) {
  4.        $nomDestination .= ".txt";
  5.    }


super important des que lutilisateur peut uploader.

n°283351
Randy---
&#034;Un jour elle sera mienne...&#034;
Posté le 10-01-2003 à 02:20:09  profilanswer
 

OUf ca y est !!  
3 plombes que je faisais des tests ... alors en fait avec rename, la fonction ne marche pas , par contre, j'avais essayé avec le copy, et là ce marche nickel...
 
Pourtant avec le rename, j'ai balisé le chemin partout en vérifiant les variables, rien à faire j'ai pas trouvé où ca chiait...
Bref ca marche avec le copy, donc c parfait... Si jamais tu trouves l'explication du rename, chuis interessé :)
merci en tout cas, et désolé si j'ai été un peu brutal (en balancant mon script entier) et un peu naïf (mais désolé je suis débutant !! :) )

n°283359
beleg
黑社會
Posté le 10-01-2003 à 03:34:08  profilanswer
 

3h31 .. je suis un true warrior, moi aussi, jai bataillé avec ma sécurité.
 
je suppose que rename n'a pas certains droits, genre effacer le fichier temporaire. Il pourrait préciser ca dans leur FAQ chez OVH.
 
film  ||  :sleep:  :??:  
 
 :D


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

  [PHP] Upload de fichier , pb avec la gestion du repertoire ?

 

Sujets relatifs
Quel forum PHP ressemble le plus à celui-ci et quel est le meilleur?écrire dans un fichier texte a un endroit précis
Comment recuperer le nom du fichier en PHP sans se casser la poire ?comment copier dan un fichier text en vb.net?
Upload de fichier en localupload etc
/n, \n <br> ? Recuperer les sauts de lignes avec MySQL/PHP textarea?Encore la gestion du tps !!
Plus de sujets relatifs à : [PHP] Upload de fichier , pb avec la gestion du repertoire ?


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