Bonjour à toutes et tous !
Voilà je développe actuellement une plate-forme de téléchargement à destination d'un client (l'entreprise dans laquelle je travaille). Or, 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 Ajaxfichier.php :
Et enfin un fichier admin.js dans lequel on retrouve une fonction Ajax permettant d'uploader ledit fichier :
Je ne vois pas où peux se situer mon erreur, pourriez-vous m'aider s'il vous plait ?
Merci beaucoup à toutes et tous !
Modifié par Eikosoul (25 Jul 2016 - 10:53)
Voilà je développe actuellement une plate-forme de téléchargement à destination d'un client (l'entreprise dans laquelle je travaille). Or, 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 :
<!--*************************************
* admin.php
* Site CAB
* Vincent Dubuc
* 01/06/2016
*
**************************************-->
<?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>
Ainsi qu'une page Ajaxfichier.php :
<!--*************************************
* ajaxfichier.php
* Site CAB
* Vincent Dubuc
* 02/05/2016
*
**************************************-->
<?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=104857600000;
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;
?>
Et enfin un fichier admin.js dans lequel on retrouve une fonction Ajax permettant d'uploader ledit fichier :
// Fonction Ajax pour uploader les fichiers
$(function() {
$("#formFichier").on("submit", function(e) {
e.preventDefault();
//console.log("#fichier");
var url = $("#fichier").val(); // On récup le chemin complet du fichier
console.log(url);
// Si le champs du fichier n'est pas vide
if(url != "") {
// On split dès que l'élément rencontre un point -> stockage dans la variable
var extension = url.split(".");
// On récupère l'extension en reprenant la dernière césure
var extension = extension[(extension.length - 1)];
//console.log(extension);
// Stockage des extensions supportées dans un tableau
var extensionssupport = new Array ("jpg","pdf");
console.log(jQuery.inArray(extension, extensionssupport));
if (jQuery.inArray(extension, extensionssupport) > -1) {
//$(".messageFichier").html("Extension : OK !");
// Si le champs fichier est renseigné
if($("#fichier").val() != "") {
// Fonction Ajax
$.ajax({
url:"include/Ajaxfichier.php",
type:"POST",
datatype:"php",
data: new FormData(this),
processData: false,
contentType: false,
success: function(reponse,status) {
//console.log(reponse);
$(".messageFichier").html(reponse);
},
error:function(data, status, error){
console.log("data:" + data);
console.log("status:" + status);
console.log("error:" + error);
},
complete: function() {
},
});
$(".messageFichier").html("Le fichier a bien été envoyé");
document.location.href="http://cabplui.fr/admin";
// Sinon message d'erreur
} else {
$(".messageFichier").html("ERREUR : Veuillez renseigner un fichier à joindre !");
}
} else {
$(".messageFichier").html("L'extension n'est pas supportée");
}
}
});
});
Je ne vois pas où peux se situer mon erreur, pourriez-vous m'aider s'il vous plait ?
Merci beaucoup à toutes et tous !
Modifié par Eikosoul (25 Jul 2016 - 10:53)