Bonjour,

Je réalise un site qui permet d'uploader et de downloader des documents. L'utilisateur doit choisir un répertoire de destination puis upload son fichier, ceci fonctionne parfaitement.

Par contre, pour le download, j'aimerais avoir la liste des répertoires et en cliquant dessus, avoir la liste des fichiers de ce répertoire tout en restant sur mon site. Actuellement, lorsque je clique sur un dossier, j'arrive sur un listage de FTP classique.

Voici mon code actuel:
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
 
function listing($repertoire){
 
$fichier = array();
 
if (is_dir($repertoire)){
 
$dir = opendir($repertoire); //ouvre le repertoire courant désigné par la variable
while(false!==($file = readdir($dir))){ //on lit tout et on récupere tout les fichiers dans $file
 
if(!in_array($file, array('.','..'))){ //on eleve le parent et le courant '. et ..'
 
$page = $file; //sort l'extension du fichier
$page = explode('.', $page);
$nb = count($page);
$nom_fichier = $page[0];
for ($i = 1; $i < $nb-1; $i++){
$nom_fichier .= '.'.$page[$i];
}
if(isset($page[1])){
$ext_fichier = $page[$nb-1];
if(!is_file($file)) { $file = '/'.$file; }
}
else {
if(!is_file($file)) { $file = '/'.$file; } //on rajoute un "/" devant les dossier pour qu'ils soient triés au début
$ext_fichier = '';
}
 
if($ext_fichier != 'php' and $ext_fichier != 'html') { //utile pour exclure certains types de fichiers à ne pas lister
array_push($fichier, $file);
}
}
}
}
 
natcasesort($fichier); //la fonction natcasesort( ) est la fonction de tri standard sauf qu'elle ignore la casse
 
foreach($fichier as $value) {
echo '<a href="'.rawurlencode($repertoire).'/'.rawurlencode(str_replace ('/', '', $value)).'">'.$value.'</a><br />';
}
 
} ?>
<html>
<head></head>
<body bgcolor="#FFE97F">
<table border=0 width="100%">
  <tr>
    <td valign="top">
	  <h1><u>Placer un document:</u></h1><br />
	  <form method="post" enctype="multipart/form-data" action="index.php?data=envoie" name="formulaire">
		<label for="dossier">Dans quel dossier souhaitez-vous placer le document?</label><br />
       <select name="dossier" id="dossier">
	   <?php $dir = opendir('./');
			 while ($file = readdir($dir)) { 
				if(strpos($file,'.') === false) {?>
					<option value="<?php echo $file; ?>"><?php echo $file; ?></option>
<?php			}
			} 			
?>
       </select>
<br />
		Document: <br />
		<input type="file" id="document" name="document"><br /><br />
		<input type="submit" name="submit" value="Envoyer" /> <br /><br />
<?php
 
if( $_GET['data']==envoie ) // si formulaire soumis
{	
	if(isset($_FILES['document']))
{ 
$dossier = $_POST['dossier'];
$fichier = basename($_FILES['document']['name']);
$taille_maxi = 1000000;
$taille = filesize($_FILES['document']['tmp_name']);
$extensions = array('.doc', '.docx', '.txt');
$extension = strrchr($_FILES['document']['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 doc, docx ou txt';
}
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['document']['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;
}
}
} 
?>	</td>
	<td valign="top"><h1><u> Prendre un document</u></h1><br />
	<?php 
listing('.');?>
	</td>
  </tr>
</table>
</body>
</html>
Merci pour votre aide.