Bonjour, j'ai un problème d'upload de fichier lorsque ceux ci sont un peu plus lourd que 1Mo or ma limite est à 15Mo :/ et mon traitement AJAX me dit que le fichier est bien upload x).
J'ai le code AJAX qui traite mon upload en % et mon traitement php qui traite l'envoie dans un dossier . Je vous mets les deux codes :
<script> // mon script de progress bar
function _(elmt)
{
return document.getElementById(elmt);
}
function uploadFile()
{
var file = _('fileimage').files[0];
var formdata = new FormData();
formdata.append('fileimage',file);
var ajax = new XMLHttpRequest();
ajax.upload.addEventListener("progress",progressHandler, false);
ajax.addEventListener("load",completeHandler,false);
ajax.addEventListener("error",errorHandler, false);
ajax.addEventListener("abort",abortHandler, false);
ajax.open("POST", "upload.php");
ajax.send(formdata);
}
function progressHandler(event)
{
_("status_bytes").innerHTML = event.loaded+" bytes uploadés sur sur"+event.total + "bytes";
var percent = (event.loaded / event.total) * 100;
_("progressBar").value = Math.round(percent);
_("status").innerHTML = Math.round(percent)+"% uploadé ... Veuillez patienter";
}
function completeHandler(event)
{
_("status").innerHTML = event.target.responseText;
_("progressBar").value = 0;
}
function errorHandler(event)
{
_("status").innerHTML = "Erreur du chargement";
}
function abortHandler(event)
{
_("status").innerHTML = "Chargement annulé"
}
</script>
</head>
<body class="bodyadmin">
<div class="blocpageadmin">
<section class="sectionadmin">
<article id="newactuality">
<p class="contBDD">Formulaire pour publier un nouvel article dans la page ACCUEIL </p>
<form method="post" action="areaadmin.php" enctype="multipart/form-data">
<label for="title" class="articletitlelabel">Titre * </label><input type="text" name="title" class="articletitle" size="30" maxlength="50" required placeholder="Votre titre"><br/><br/>
<textarea name="message" id="message" rows="8" cols="60" placeholder="Votre article (actualités)" class="articlebbd" required="Veuillez compléter ce champ." maxlength="1500"></textarea><br/>
<label for="fileimage" class="label-file">Choisir une image</label><input type="file" name="fileimage" id="fileimage" class="filebdd"><br/>
<input type="button" name="loadbar" value="Uploader le fichier" onclick="uploadFile()">
<progress value="0" max="100" id="progressBar"></progress>
<h3 id="status"></h3>
<p id="status_bytes"></p>
<input type="submit" name="Envoyer" value="Publier" class="sendnews" title="Cliquez-ici pour publier !" />
</form>
</article>
</section>
</div>
</body>
ma page upload.php
<?php
if (!empty($_Files)) {
$nomFichier = $_Files['fileimage']['name'];
$tempRep = $_Files['fileimage']['tmp_name'];
$tailleFichier = $_Files['fileimage']['size'];
$typeFichier = $_Files['fileimage']['type'];
$error = $_Files['fileimage']['error'];
if ($error!=0 || !$tempRep) {
echo 'Erreur: Le fichier n\'a pas pu être uploadé';
die();
}
if(move_uploaded_file($tempRep, 'upload/'.$nomFichier))
{
echo 'Chargement du fichier '.$nomFichier.' terminé !';
}
else
{
echo 'Une erreur est survenue lors de l\'envoi du fichier';
}
}
?>
Et le traitement du formulaire :
else //(isset($_FILES['image']) AND $_FILES['fileimage']['error']==0) // il y a une image !
{
//fichier envoyé
// Varibale d'erreur par soucis de lisibilité
// Evite d'imbriquer trop de if/else, on pourrait aisément s'en passer
$error = false;
// On définis nos constantes
$newName = hash('sha512', session_id().microtime());
$path = "imagearticle";
$legalExtensions = array("jpg", "png", "gif");
$legalSize = "15000000"; // 15000000 Octets = 15 MO
//Vérification image non script
/*
$handle = fopen($nom, 'r');
if ($handle)
{
while (!feof($handle) AND $erreur == 0)
{
$buffer = fgets($handle);
switch (true)
{
case strstr($buffer,'<'):
$error = true;
break;
case strstr($buffer,'>'):
$erreur += 1;
$error = true;
break;
case strstr($buffer,';'):
$erreur += 1;
$error = true;
break;
case strstr($buffer,'&'):
$erreur += 1;
$error = true;
break;
case strstr($buffer,'?'):
$erreur += 1;
$error = true;
break;
}
}
fclose($handle);
}*/
// On récupères les infos
$file = $_FILES['fileimage'];
$actualName = $file['tmp_name'];
$actualSize = $file['size'];
$infosfichier = pathinfo($_FILES['fileimage']['name']);
$extension = $infosfichier['extension'];
// On s'assure que le fichier n'est pas vide
if ($actualName == '' || $actualSize == 0)
{
$error = true;
}
// On vérifie qu'un fichier portant le même nom n'est pas présent sur le serveur
if (file_exists($path.'/'.$newName.'.'.$extension))
{
$error = true;
}
// On effectue nos vérifications réglementaires
if ($error==false)
{
if ($actualSize < $legalSize)
{
if (in_array($extension, $legalExtensions))
{
move_uploaded_file($actualName, $path.'/'.$newName.'.'.$extension);
//Classique traitement nouvel article
$tit=htmlspecialchars($_POST['title']);
$msg=htmlspecialchars($_POST['message']);
$tit_secure=str_replace(array("\n","\r",PHP_EOL),'',$tit);
$msg_secure=str_replace(array("\n","\r",PHP_EOL),'',$msg); // article sécurisé à importer dans la BDD
$liste_jour = ['Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche'];
$w=date('w');
$jourlettre = $liste_jour[$w-1];
$jour = date('d');
$mois = date('m');
$annee = date('Y');
$liste_moi = array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre' );
try
{
$bdd = new PDO('mysql:host=localhost;dbname=crabitanbellevue;charset=utf8', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// sécurisation d'éventuels bugs
// On ajoute un article dans mes articles
/*$reqid= $bdd->prepare('SELECT MAX(id) AS ID FROM mes_articles');
$reqid->execute();
$donnes=$reqid->fetch();
$newid=$donnes['ID'];
$newid+=1;// Artcile de référence dans la BDD */ // Si id n'était pas incrémenté automatiquement
$req= $bdd->prepare('INSERT INTO mes_articles(Titre, Article, JourSem, Jour, Mois , Annee, NameFile) VALUES(:Titre, :Article, :JourSem, :Jour, :Mois, :Annee, :NameFile)');
$req->execute(array(
'Titre' => $tit_secure,
'Article' => $msg_secure,
'JourSem' => $jourlettre,
'Jour' => $jour,
'Mois' => $liste_moi[$mois-1],
'Annee' => $annee,
'NameFile' => $newName.'.'.$extension
));
// id s'autoincrémente et sécurisation de la requête
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr-Fr">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="homeadmin.css" />
<title></title>
</head>
<body class="bodyadmin">
<div class="blocpageadmin">
<section class="sectionadmin">
<article id="newactuality">
<p class="contBDD2">Félicitations votre nouvel artcile vient d'être publié sur votre ACCUEIL.<br/><br/>Vous allez être redirigé vers l'ACCUEIL automatiquement dans quelques secondes.</p>
</article>
</section>
</div>
</body>
</html>
<?php
$delai=6; // le nombre de secondes
$url='../../home.php'; // ton url
header("Refresh: $delai;url=$url");
}
}
}
else
{
// On supprime le fichier du serveur
@unlink($path.'/'.$newName.'.'.$extension);
// Page d'erreur intrusion
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr-Fr">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="homeadmin.css" />
<title></title>
</head>
<body class="bodyerror">
<div class="blocpageadmin">
<section class="sectionerror">
<article class="articlearror">
<p class="texterror">Vous n'êtes pas autorisé à publier un article avec un tel code ! Ou bien le fichier dépasse le poids de 15Mo auquel cas vous devez compresser votre fichier !<br/><br/>Vous allez être redirigé vers Google</p><!-- redirigé vers home -->
</article>
</section>
</div>
</body>
</html>
<?php
$delai=5; // le nombre de secondes
$url='https://www.google.fr/'; // ton url
header("Refresh: $delai;url=$url"); // Page d'erreur intrusion
}
}
- Edité par ApoSkunz 15 février 2019 à 10:19:31
Le dev web est outil de création illimité.
Problème d'upload/progress bar AJAX
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le dev web est outil de création illimité.