Upload: variable du dossier de destination [RESOLU]

Upload: variable du dossier de destination [RESOLU] - PHP - Programmation

Marsh Posté le 01-03-2006 à 10:47:29    

Bonjour, j'ai un formulaire d'upload et un script qui traite les données.
 
Arborescence des fichiers:
/acces_prive
/acces_prive/admin/
/acces_prive/personne1/
/acces_prive/personne1/fichiers/
/acces_prive/personne2/
/acces_prive/personne2/fichiers/
etc...
Les deux scripts sont dans le dossier admin. Je voudrai que les fichiers uploadés arrivent dans le dossier "fichiers" de la personne (désignée par $user) et je ne sais pas comment faire.
Un peu d'aide? Merci
 
Les scripts:

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html>
  3. <head>
  4. <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  5. <title></title>
  6. <LINK REL="stylesheet" TYPE="text/css" HREF="browse_style.css">
  7. </head>
  8. <body>
  9. UPLOAD:
  10. <form method="post" enctype="multipart/form-data" action="upload.php">
  11. <p>
  12. Nom d'utilisateur: <input type="text" name="user" size="43">
  13. <br><input type="file" name="fichier" size="30">
  14. <input type="submit" name="upload" value="Uploader">
  15. </p>
  16. </form>
  17. </body>
  18. </html>


 

Code :
  1. <?php
  2. $user = $HTTP_POST_VARS['user'];
  3. if( isset($_POST['upload']) ) // si formulaire soumis
  4. {
  5.     $content_dir = 'upload/'; // dossier où sera déplacé le fichier
  6.     $tmp_file = $_FILES['fichier']['tmp_name'];
  7.     if( !is_uploaded_file($tmp_file) )
  8.     {
  9.         exit("Le fichier est introuvable" );
  10.     }
  11.     // on copie le fichier dans le dossier de destination
  12.     $name_file = $_FILES['fichier']['name'];
  13.     if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
  14.     {
  15.         exit("Impossible de copier le fichier dans $content_dir" );
  16.     }
  17.     echo "Le fichier a bien été uploadé";
  18. }
  19. ?>


Message édité par tarte en pion le 02-03-2006 à 18:49:07
Reply

Marsh Posté le 01-03-2006 à 10:47:29   

Reply

Marsh Posté le 01-03-2006 à 10:55:54    

heu ...  

Code :
  1. $content_dir = $user.'/upload/';

mais où est donc ornicar?
pardons : Mais où était donc la difficulté?

Reply

Marsh Posté le 01-03-2006 à 11:10:44    

merci lol En fait j'apprends par l'experience! Donc ça je savais pas encore! Mais t'es sur que ça va remonter les répertoires pour aller ds le dossier de la personne? Regarde l'arborescence...

Reply

Marsh Posté le 01-03-2006 à 11:11:35    

$content_dir = '../'.$user.'/upload/';
Répertoir parent : ..
courant : .
La base!  ;)


Message édité par dwogsi le 01-03-2006 à 11:12:48
Reply

Marsh Posté le 01-03-2006 à 11:13:55    

ok merci je testerai ça! :) (les " me manquaient dans mes essais, j'avais fait ' ;))

Reply

Marsh Posté le 01-03-2006 à 11:28:55    

tarte en pion > Je me pensais déjà dans "/acces_prive" :lol:
En fait,ca ferait même $content_dir = '../acces_prive/'.$user.'/upload/';  
en rajoutant autant de ../ que nécessaire.
 
Solution plus simple quand on conait le truc : utiliser les informations fournis par le serveur dans $_SERVER. La position de la racine du site par rapport à l'arborescence du disque dur est indiqué dans $_SERVER['DOCUMENT_ROOT'] . C'est cette information qui va nous intéresser.
 
Ca donne alors :  

Code :
  1. $_SERVER['DOCUMENT_ROOT'].'/acces_prive/'.$user.'/upload/';


Cette méthode à l'avantage d'être utilisable sans modification et ce quel que soit le dossier du site où on se trouve.
 
PS : Sous windows, il va peut être faloir remplacer les "/" par des "\" une fois la chaine construite.


Message édité par omega2 le 01-03-2006 à 11:30:34
Reply

Marsh Posté le 01-03-2006 à 11:29:43    

ha t'as édité!
Nickel, merci les gars!

Reply

Marsh Posté le 01-03-2006 à 11:31:22    

omega2 j'utiliserai ton truc si j'en ai besoin par la suite! Merci quand même!


Message édité par tarte en pion le 01-03-2006 à 11:32:13
Reply

Sujets relatifs:

Leave a Replay

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