Problème Upload

Problème Upload - PHP - Programmation

Marsh Posté le 23-01-2006 à 13:26:43    

J'ai un problème lors d'upload de fichiers en utilisant PHP. Avant, j'utilisais une mandrake 10 et tout fonctionnait parfaitement. Depui, je suis passé sur Ubuntu, mais le problème c'est que la variable $_FILES['name'] ne récupère pas la bonne valeur.
 
Par exemple si j'envois le fichier suivant : /blabla/test.txt, $_FILES['name'] me retourne test.txt alors qu'avec Mandrake ca me retournait bien /blabla/test.txt, j'ai repris le même fichier de configuration PHP, donc ça vient peut-être d'Apache ? Vous auriez une petite idée?
 
FlyZu

Reply

Marsh Posté le 23-01-2006 à 13:26:43   

Reply

Marsh Posté le 23-01-2006 à 13:44:58    

http://fr2.php.net/manual/fr/features.file-upload.php


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 23-01-2006 à 13:53:41    

Et ?
 
Je ne trouve rien qui parle de mon problème :-(

Reply

Marsh Posté le 23-01-2006 à 13:59:03    

...et à part ça tu trouveras pas grand chose sur les envois de fichiers dans la doc.
 
Je ne vois pas l'intérêt de récupérer le chemin complet d'origine, d'ailleurs...[:urd]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 23-01-2006 à 14:01:39    

Ba en fait, l'intérêt n'est pas de récupérer le chemin d'origine, mais en fait j'utilise cette page pour uploader des fichiers dans un dossier spécifique. Par exemple, j'ai 4 programmes clients qui tournent et qui upload les fichiers sur le serveur, par exemple /1212/test.txt et /34734/test.txt. Ce que je comprends pas c'est que ça marche parfaitement sous Mandrake, mais depuis que g changé de distribution, ça ne marche plus :-(

Reply

Marsh Posté le 23-01-2006 à 14:03:27    

euh, j'ai un doute là.
On peut voir ton bout de code qui ne fonctionne plus?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 23-01-2006 à 14:17:23    

Code :
  1. <?php
  2. // Variable pour le répertoire du serveur  
  3. $dir = $_SERVER['DOCUMENT_ROOT'];
  4. // Type MIME autorisé
  5. $OK_type = "application/octet-stream";
  6. // Nous vérifions que le bouton Upload Files a bien été pressé
  7. if(isset($_POST['submit'])){
  8.   // Variables
  9.   $tmp_name = $_FILES['upload']['tmp_name']; // Nom du fichier temporaire
  10.   $new_name = $_FILES['upload']['name']; // Nom du fichier final
  11.   $mime_type = $_FILES['upload']['type']; // Type MIME
  12.   // Vérification du type MIME
  13.   if ($mime_type == $OK_type){
  14.     // Nous déplaçons du dossier temporaire vers le dossier final
  15.     if (!move_uploaded_file($tmp_name,$dir . $new_name))
  16.       echo "ERROR : $new_name was not uploaded";
  17.     else
  18.       echo "$new_name was uploaded sucessfully";
  19.   }
  20.   else{
  21.     // Impression d'une erreur
  22.     echo "ERROR : $new_name was not uploaded";
  23.   }
  24. }
  25. // Sinon, le bouton Upload Files n'a pas été pressé
  26. else
  27.   echo 'ERROR : button Upload Files not pressed';
  28. ?>
  29. <!-- Affichage du formulaire -->
  30. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
  31.   <fieldset>
  32.     <legend>Upload Files</legend>
  33.     <input type="file" name="upload"/>
  34.   </fieldset>
  35.   <input type="submit" name="submit" value="Upload Files"/>
  36. </form>

Reply

Marsh Posté le 23-01-2006 à 14:21:14    

Et l'erreur est? :??:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 23-01-2006 à 14:22:40    

lol, avec Mandrake, $_FILES['upload']['name'] me retourne /12345/test.txt alors qu'avec Ubuntu, ça me retourne test.txt, tu comprends le problème?

Reply

Marsh Posté le 23-01-2006 à 14:33:43    

Non. Enfin si, mais l'utilisation que tu voudrais en faire me parait incorrecte.
 
Ton problème est qu'un fichier de même nom qu'un ancien l'écrase, c'est bien ça? Si oui, c'est à ton script de le gérer...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 23-01-2006 à 14:33:43   

Reply

Marsh Posté le 23-01-2006 à 14:35:46    

Wep il l'écrase, mais bon vu que j'arrive pas à récupérer la variable correctement.


Message édité par FlyZu le 23-01-2006 à 14:37:25
Reply

Marsh Posté le 23-01-2006 à 14:37:32    

...mais ya pas de variable en entier! [:mechant]
C'est tout à fait correct et suffisant, ce que tu obtiens!!
 
Il se passerait quoi sinon si tu uploadais à-partir d'un windows? Tu aurais des répertoires /truc/C:/.../test.txt? [:mlc]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 23-01-2006 à 14:40:20    

Ce n'est pas correct lol, non sérieux, la requête HTTP est créée depuis une application, donc ça ne sera jamais comme ça (/truc/matchin/../test.txt). Et puis POURQUOI ça ne me retourne pas la même chose entre deux distributions?

Reply

Marsh Posté le 23-01-2006 à 14:48:57    

Je n'ai jamais vu le comportement que tu attends nulle part...[:skeye]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 23-01-2006 à 14:54:25    

Cool lol, alors explique-moi pourquoi dans l'exemple sur le site PHP.net ils utilisent basename pour enlever le chemin ?
 
Et pourquoi avant ça fonctionnait ?


Message édité par FlyZu le 23-01-2006 à 14:55:38
Reply

Marsh Posté le 23-01-2006 à 15:40:16    

En fait, c'est logique, ce n'est pas la même version de PHP. J'imagine que c'est pour raison de sécurité que ça a été desactivé pour ne pas, par exemple, remonter dans les répertoires. T'en penses quoi skeye?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed