Upload de fichiers dans répertoire spécifique

tomy2904 Messages postés 361 Statut Membre -  
Alain_42 Messages postés 5413 Statut Membre -
Bonjour,

voilà je vous explique ce qu'il se passe : j'aimerais uploader des fichiers (grâce à un formulaire d'upload) dans un répertoire spécifique (portant le nom de l'utilisateur connecté). Vous vous doutez que le nom du répertoire doit changer à chaque fois car l'utilisateur change. Or dans mon code php je peux mettre que mon lien absolu :

$chemin = "./" ;

j'aimerais donc changer ce chemin par le nom de mon répertoire qui change a chaque utilisateur...

Voici un bout de code de ma fonction qui crée mon répertoire :
<?
function creer_rep($nom)
{
$nom = ""; // Le nom du répertoire à créer

// vérifie si le répertoire existe :
if (is_dir($nom)) {
echo 'Le répertoire existe déjà!';
}
// création du nouveau répertoire
else {
mkdir($nom);
echo 'Le répertoire '.$nom.' vient d\'être créé!';
}
}

?>

Je rappelle ensuite cette fonction lors de l'inscription pour créer le repertoire portant le nom du login :

creer_rep("./".$login);

J'espère que vous saurez m'aider, merci d'avance!

9 réponses

  1. Alain_42 Messages postés 5413 Statut Membre 904
     
    petite remarque en passant

    utilises le tag <?php au lieu de <? cela t'évitera des soucis en php5

    ensuite pour créer ton rep il faut que tu lui donne le chemin relatif par rapport à ton script php

    ex: si ton script est dans le rep
    /scripts_php/upload_fichiers.php
    et que tes rep à creer sont dans
    /fichiers_uploades/toto,titi,tata

    $chemin_relatif='../fichiers_uploades';

    creer_rep($chemin_relatif.'/'.$login);


    et attention protèges ton $login par htmlentitie($_POST['login'] par exemple
    0
  2. tomy2904 Messages postés 361 Statut Membre 32
     
    Merci alain, en fait un répertoire est créé pour chaque login, donc si je m'inscrit avec Tom comme login, un dossier (répertoire) est créé automatiquement avec comme nom "tom" -> php/tom (dans ce cas)

    Le prob c'est que ces login changent (si je me connecte avec un autre login le repertoire n'est plus le même) et je ne sais pas quoi mettre dans mon code pour uploader le fichier pour que ce nom de répertoire change par rapport au login...

    -> $chemin = "./" ; (que mettre pour remplacer le ./ ?)

    Merci!
    0
  3. Alain_42 Messages postés 5413 Statut Membre 904
     
    he bien:

    $chemin = "./'.$login
    0
  4. tomy2904 Messages postés 361 Statut Membre 32
     
    Merci, j'ai essayé et j'ai ce message d'erreur :

    Notice: Undefined variable: login in php\fileupload.php on line 18

    Et la ligne 18 est : $chemin = "./.$login";

    Je ne trouve vraiment pas :/ Merci quand même de votre aide!

    Ps: le fichier s'upload mais dans le répertoire courant (php/) et non dans le répertoire associé au login...
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Alain_42 Messages postés 5413 Statut Membre 904
     
    $login je pensait que tu l'avait

    par
    $login=$_POST['login'];
    0
  7. tomy2904 Messages postés 361 Statut Membre 32
     
    Tjs le même problème, voici mon code php d'upload :

    "<?php
    ob_start(); // ***
    //on vérifies que le champ est bien rempli:
    if(!empty($_FILES["fichier_choisi"]["name"]))
    {
    //nom du fichier choisi:
    $nomFichier = $_FILES["fichier_choisi"]["name"] ;
    //nom temporaire sur le serveur:
    $nomTemporaire = $_FILES["fichier_choisi"]["tmp_name"] ;
    //type du fichier choisi:
    $typeFichier = $_FILES["fichier_choisi"]["type"] ;
    //poids en octets du fichier choisit:
    $poidsFichier = $_FILES["fichier_choisi"]["size"] ;
    //code de l'erreur si jamais il y en a une:
    $codeErreur = $_FILES["fichier_choisi"]["error"] ;

    //chemin qui mène au dossier qui va contenir les fichiers upload:
    $login=$_POST['login'];
    $chemin = "./$login";

    if(copy($nomTemporaire, $chemin.$nomFichier))
    { // Permet d'afficher le message suivant et d'actualiser la page après 5 secondes
    echo("<h2><b><br /><br /><br /><br />Upload réussi!!! <br /><br />Vous êtes redirigé automatiquement sur votre espace membre...</b></h2>") ;
    header('Refresh: 5; url=membre.php');
    ob_flush(); } // ***
    else
    echo("<br>l'upload a échoué") ;
    }//fin if
    else
    {
    echo("Vous n'avez pas choisit de fichier!!<br>") ;
    echo("<a href=\"./membre.php\">Retour</a>") ;
    }//fin else

    ?> "

    Je ne comprends pas...
    0
  8. Alain_42 Messages postés 5413 Statut Membre 904
     
    il manque une /

    $chemin = "./$login";

    if(copy($nomTemporaire, $chemin.$nomFichier))

    essayes comme ça:
    $chemin = "./".$login."/";
    
    if(move_uploaded_file($nomTemporaire, $chemin.$nomFichier)) 
    
    0
  9. tomy2904 Messages postés 361 Statut Membre 32
     
    Ok merci je vais essayer mais petite question: je le mets où le dernier "if" ( if(move_uploaded_file($nomTemporaire, $chemin.$nomFichier)) ) ?

    Merci!
    0
  10. Alain_42 Messages postés 5413 Statut Membre 904
     
    à la place de if(copy...
    0