Bonjour à toutes et à tous !
Je développe actuellement une plate-forme de téléchargement à destination d'un client (l'entreprise dans laquelle je travaille). Dans l'interface d'administration, le but est de pouvoir envoyer des fichiers via un input de type "file" dans un dossier pour pouvoir les afficher côté utilisateur et ainsi les télécharger.
Or, jusqu'à présent, impossible d'envoyer des fichiers de plus de 3 Mo alors que le débit maximum donné avec mon hébergement est de 64 Mo. Aussi je requiers votre aide pour m'aider à voir là ou mon code cafouillerait (je tiens à prévenir que je reste un débutant dans le domaine)
L'action se déroule dans trois fichiers : une page admin.php dans laquelle se trouve le formulaire d'envoi des fichiers ainsi qu'une page Ajaxfichiers.php dans laquelle l'upload est effectuée :
Code admin.php :
Et une page Ajaxfichiers.php (que j'include avant le chargement de la page admin.php.
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160 <?php include("Ajaxfichier.php"); ?> <img alt="Nature" title="Nature" src="css/img/NatureBer.jpg" class="adminimg"/> <div class="formulaire"> <form method="POST" action="" enctype="multipart/form-data" id="formFichier"> <!-- Pour ajouter un fichier --> <div class="fichier"> <label for="fichier">Ajouter un fichier (100Mo Max)</label></br> <input type="hidden" name="MAX_FILE_SIZE" value="104857600"/> <input type="text" class="chemin" id="chemin"/> <input type="file" name="fichier[]" id="fichier" multiple="multiple"/> </div> </br> <!-- Bouton d'envoi --> <input class="valid" type="submit" name="val" value="Envoyer" /> </form> <div class="messageFichier"> </div> <div class="affiche"></div> <div class="download"></div> <?php $dir= "./fichiers/"; /******** Fonction pour supprimer des fichiers *********/ function deletefile($file) { if ($file != "") { unlink($file); // On efface. } } // Si on demande à supprimer, alors on efface le fichier if (!empty($_GET['action']) and $_GET['action'] == "suppr") { //var_dump($_GET); deletefile($dir.$_GET['p']); header('Location: admin'); } /******** Fonction pour lire et afficher les fichiers uploadés *********/ $dossier = "./fichiers/"; $repertoire = opendir($dossier); // On définit le répertoire dans lequel on souhaite travailler. /******** Fonction pour pagination des fichiers *********/ function pagination() { $filesCount = glob("./fichiers/*.*"); $nbfiles = count($filesCount); $pagination = ""; //echo $nbfiles; if ($nbfiles > 5) { $nbperpage = 5; // On définit le nombre de page à créer $nbpages=ceil($nbfiles/$nbperpage); // On fait une boucle pour afficher la pagination if($_GET["p"] > 1) { $pagination.="<a class='Lienpagination' href='admin-". ($_GET["p"]-1) ."'><</a> "; } for ($i =1; $i <= $nbpages; $i++) { $pagination .="<a class='Lienpagination' href='admin-". $i ."'>". $i ."</a> "; } if($_GET["p"]<$nbpages) { $pagination.="<a class='Lienpagination' href='admin-". ($_GET["p"]+1) ."'>></a> "; } } return $pagination; } // Vérification de l'existance du dossier if (is_dir($dir)) { // Vérification du contenu if ($dossier = opendir($dir)) { // Affichage de l'entête du tableau $begintab = " <div class='tabetform'> <table> <thead> <tr> <th class='hand'>Nom du fichier</th> <th class='hand'>Taille</th> <th class='hand'>Date d'ajout</th> <th class='hand'>Action</th> </tr> </thead> <tbody>"; // Boucle tant qu'on a pas fait le tour des fichiers $numFichier = 1; while (($file=readdir($dossier)) !=false) { // Afficher le nom et le type si ce n'est pas un élément du système if ($file != '.' && $file != ".." && preg_match('#\.(pdf)$#i', $file)) { // |_ Changer en pdf pour la plate forme // SI le fichier fait parti de l'interval de la pagination alors on l'affiche // SI le paramètre de page P n'est renseigné alors on le passe à 1 if (empty($_GET["p"])) { $_GET["p"] = 1; } if (($numFichier >= (($_GET["p"] -1) * 5)) && ($numFichier <= ($_GET["p"] * 5))) { /******** Fonction pour afficher la taille des fichiers *********/ // On affiche dans la variable les informations relatives au fichier $taille=stat($dir.$file); // On convertit et arrondit le résultat en Ko ou Mo $size=$taille["size"]; if ($size >= 1048576) { $size=(($taille["size"] / 1048576 * 100) / 100); $final_size=round($size,2)." Mo"; } else { $size=(($taille["size"] / 1024 * 100) / 100); $final_size=round($size,2)." Ko"; } /******** Fonction pour afficher la date d'ajout des fichiers *********/ $ladate = stat($dir.$file); $datefinal=date('d/m/Y', $ladate['atime']); // Affiche des fichiers si fichier uploadé $begintab .= " <tr> <td class='file'><img class='imgtable' alt='logo Adobe' title='document PDF' src='./css/img/adobe_fichier.png'/>". $file ."</td> <td class='size'>". $final_size ."</td> <td class='date'>".$datefinal."</td> <td><a href=index.php?controler=admin&action=suppr&p=". $file ."><img src='css/img/croixrouge.png' alt='Croix rouge' title='supprimer' /></a></td> </tr> "; } $numFichier++; } } $begintab .= " </tbody> </table> </div>"; echo $begintab; echo "<div class='pagination'>".pagination()."</div>"; // On ferme la connexion closedir($dossier); } } ?> </div> <!-- Bloc gris en background --> <div class="bloc"> </div>
Code Ajaxfichiers.php :
Sauriez-vous m'indiquer où est située mon erreur (si il y en a une car je n'arrive pas à la voir) et m'aider dans la résolution de ce problème ?
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 <?php //var_dump($_POST, $_FILES); $message = ""; if(!empty($_POST)) { for ($i = 0; $i < sizeof($_FILES["fichier"]["name"]); $i++) { // Si le fichier est bien renseigné alors on vérifie le type if(!empty($_FILES["fichier"]) and $_FILES["fichier"]["name"][$i] != "") { // Tableau des extensions gérées $typeFichier = array ( "pdf", ); // On remplace les espaces par des underscores $good=array("_"); $bad=array(" "); // Le tout au sein du nom du fichier $name=$_FILES["fichier"]["name"]; $filename=str_replace($bad,$good,$name); // On récupère l'extension du fichier $fichier=strtolower(substr(strrchr($filename[$i], "."),1)); //Pour gérer la taille du fichier $size=$_FILES["fichier"]["size"]; $sizemax=104857600; if ($size >= $sizemax) { //Si l'extension est autorisée, on autorise le fichier if (in_array($fichier, $typeFichier)) { $destinationFichier = "../fichiers/". basename($filename[$i]); // Si le fichier est bien envoyé, alors on affiche le message correspondant if (move_uploaded_file($_FILES["fichier"]["tmp_name"][$i], $destinationFichier)) { // Informations sur le fichier transféré var_dump($fichier); $message .="INFO : Transfert réussi <br/>"; $message .="Nom du fichier: ". $filename[$i] ."<br/>"; header('Location: admin'); } else { // Message d'erreur en cas de transfert échoué $message="Erreur ! Le transfert a échoué !"; } } else { $message="Erreur ! Le type d'extension n'est pas autorisé !"; } } else { $message="Erreur ! Le fichier est trop gros pour être uploadé !"; } } } } //On envoie la réponse echo $message; ?>
Merci beaucoup !
Partager