Choisir le répertoire dans lequel on va uploader

Eléphanteau du PHP | 12 Messages

30 sept. 2010, 00:43

Bonjour à tous !

Je travail actuellement sur un petit programme d'upload d'image sur un serveur, mais je suis confronté à certains soucis :(


J'ai dans un premier temps créer dans un dossier images trois autres dossier "folder1", "folder2" et "folder3"
j'ai un petit script qui permet de les lister :

Code : Tout sélectionner

<form action="editeur.php" method="post"> <select name="choix"> <?php $nb_fichier = 0; echo '<ul>'; if($dossier = opendir('./images/')) { while(false !== ( $repertoires = readdir($dossier))) if ( $repertoires != '.' && $repertoires != '..' && $repertoires != 'index.php') { echo '<option value="' . $repertoires . '">' . $repertoires . '</option>'; } closedir($dossier); } else { echo 'Le dossier n\' a pas pu être ouvert'; } ?> </select> </form> </form>
Ceci liste donc mes dossiers.

j'upload mes images à l'aide de ce script là :

Code : Tout sélectionner

<?php mkdir('fichier/', 0777, true); $dossier = 'images/'; $fichier = basename($_FILES['avatar']['name']); $taille_maxi = 100000; $taille = filesize($_FILES['avatar']['tmp_name']); $extensions = array('.png', '.gif', '.jpg', '.jpeg'); $extension = strrchr($_FILES['avatar']['name'], '.'); //Début des vérifications de sécurité... if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau { $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...'; } if($taille>$taille_maxi) { $erreur = 'Le fichier est trop gros...'; } if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload { //On formate le nom du fichier ici... $fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier); if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné... { echo 'Upload effectué avec succès !'; } else //Sinon (la fonction renvoie FALSE). { echo 'Echec de l\'upload !'; } } else { echo $erreur; } ?>
le truc c'est que j'aimerais qu'à l'upload je puisse choisir le répertoire dans lequel j'upload , ici directement dans le dossier images et j'arrive pas mettre mes deux codes ensemble, à savoir je selectionne un répertoire, et quand je fais uploader sa upload dans ce répertoire :( ...

la seul solution que je vois c'est à l'aide de la fonction POST ... ce qui voudrais dire faire le système d'upload en plusieurs pages ...

Après j'aimerai aussi savoir créer un répertoire sur le serveur

En gros faudrai que j'arrive à quelque chose comme ca :

Code : Tout sélectionner

Choisissez le répertoire d'upload < là on as la liste > Répertoire d'upload < là une case type input que l'on peu modifier si l'on veut pour y mettre le nom d'un nouveau répertoire > Choisissez l'image à uploader < mon script d'upload qui prend en compte la valeur de la case input, et que si le répertoire n'existe pas alors il le créer >
Je sais pas trop comment organiser tout ca ... quelqu'un pourrait il m'aider ?

Merci d'avance !
Cordialement,

Neo.
Cordialement,

Neo.

Mammouth du PHP | 1967 Messages

30 sept. 2010, 13:09

lors de la récupération du fichier, tu peux également récupérer le contenu des input de dossier, et après avoir fait les vérifications d'usages (très important dans ton cas, surtout si le script est accessible à beaucoup de monde) tu concatène le dossier avec ta variable $dossier et le tour est joué.

Je préconiserai dans le cas où il y a création de dossier (genre nouvel album photo etc.) de gérer cela séparément, et de n'autoriser l'upload que dans une suite de dossier existant.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube