Bonjour à tous,
Merci de m'accorder quelques minutes conçernant un problème dans mon code que je n'arrive vraiment pas à résoudre.
En fait, je dispose d'un système d'upload de fichiers sur une page appelée add_files.php.
Sur cette page, il y a un formulaire grâce auquel le visiteur choisit son fichier ainsi que le dossier de destination de son fichier (parmi tous les dossiers présents dans le dossier parent "images/") :
images/
dossier1/
dossier2/
etc...
Le problème arrive ensuite lors du traitement PHP :
lorsque j'upoad des fichiers .pdf, .txt, tout va bien, mais je souhaiterais que le visieur ne puisse uploader que des images. Or, algré l'absence de restrictions d'extensions dans mon traitement, l'upload ne se fait pas pour les fichiers images mais se déroule correctement pour les fichiers .txt/.pdf comme je vous le disais précédemment.
Pouvez-vous m'éclairer ?
Voici tout d'abord mon code d'upload (présent sur la même page que mon formulaire) :
Voilà ensuite le code de mon formulaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <?php function upload($index,$destination,$maxsize=FALSE,$extensions=FALSE) { //Test1: fichier correctement uploadé if (!isset($_FILES[$index]) OR $_FILES[$index]['error'] > 0) return FALSE; //Test2: taille limite if ($maxsize !== FALSE AND $_FILES[$index]['size'] > $maxsize) return FALSE; //Test3: extension $ext = substr(strrchr($_FILES[$index]['name'],'.'),1); if ($extensions !== FALSE AND !in_array($ext,$extensions)) return FALSE; //Déplacement return move_uploaded_file($_FILES[$index]['tmp_name'],$destination); } $msg = ''; if(isset($_POST['submit'])) { $upload1 = upload('fichier','../images/'.$_POST['dir_choice'].'/'.$_FILES['fichier']['name'].'',FALSE, FALSE ); if($upload1) { $msg = "Upload réussi."; } else { $msg = 'ko'; } } ?>
J'en profite par ailleurs pour vous demander si il est possible de lister les dossiers présents dans les sous-dossiers de mon dossier images/ ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 <form method="post" enctype="multipart/form-data"> <div class="controls"> <label>Sélectionnez le fichier que vous souhaitez envoyer sur le serveur</label> <input type="file" name="fichier"/> </div><br /> <div class="controls"> <label>Dossier de destination</label> <select class="btn-group" name="dir_choice" data-toggle="buttons"> <?php function list_dir($name) { if($dir = opendir($name)) { while(($file = readdir($dir)) !== false) { if($file != '.' && $file != '..') { if(!ereg(".jpg", $file) && !ereg(".JPG", $file) && !ereg(".bmp", $file) && !ereg(".BMP", $file) && !ereg(".png", $file) && !ereg(".PNG", $file) && !ereg(".css", $file) && !ereg(".php", $file) && !ereg(".html", $file) && !ereg(".sql", $file) && !ereg(".txt", $file) && !ereg(".cmd", $file)) { echo '<option type="radio" value="'.$file.'">'.$file.'</option>'; } } } closedir($dir); } } $dir = "../images/"; if(is_dir($dir)) { if($dh = opendir($dir)) { while(($file = readdir($dh)) !== false) { if($file != '.' && $file != '..') { if(!ereg(".jpg", $file) && !ereg(".JPG", $file) && !ereg(".bmp", $file) && !ereg(".BMP", $file) && !ereg(".png", $file) && !ereg(".PNG", $file) && !ereg(".css", $file) && !ereg(".php", $file) && !ereg(".html", $file) && !ereg(".sql", $file) && !ereg(".txt", $file) && !ereg(".cmd", $file)) { echo '<option type="radio" value="'.$file.'">'.$file.'</option>'; echo list_dir($file); } } } closedir($dh); } } else { echo "Le dossier ".$dir." est introuvable"; } ?> </select> </div><br /> <div class="controls"> <input type="submit" class="btn btn-primary" name="submit" value="Ajouter au serveur" /> <?= $msg ?> </div> </form>
Ex :
images/
dossier1/
dossier2/
sous-dossier1/
dossier3/
Actuellement, seuls les sous-dossiers directs du dossiers parent (dossier1, dossier2, dossier3) ne s'affichent dans ma liste de séléection. Comment afficher leurs sous-dossiers .
Je vous remercie par avance !!
Partager