Afficher une alerte
t671
-
t671 -
t671 -
Bonjour,
J'ai un script d'upload de fichier, et je voudrais mettre une alerte si le fichier à uploader (via formulaire) est supérieur à 2Mo.
Ca fonctionne en local, mais pas on-line (hébergement chez Free).
J'ai testé 2 solutions, mais rien à faire. Le fichier n'est pas uploadé (ce qui est normal), et je n'ai pas le message d'alerte attendu :
Et le 2° script de testé :
Pour le premier test, le script saisie_stat_2.php contient un code javascript qui affiche une alerte en pop-pup.
Auriez-vous une solution à me proposer ?
Pourquoi ça ne fonctionne pas online ?
Merci
J'ai un script d'upload de fichier, et je voudrais mettre une alerte si le fichier à uploader (via formulaire) est supérieur à 2Mo.
Ca fonctionne en local, mais pas on-line (hébergement chez Free).
J'ai testé 2 solutions, mais rien à faire. Le fichier n'est pas uploadé (ce qui est normal), et je n'ai pas le message d'alerte attendu :
$fichier = basename($_FILES['monfichier']['name']); if (!empty($fichier)) { $size=$_FILES['monfichier']['size']; if ((!empty ($fichier)) && ($size == 0)) //-----Là, si $size=0, c'est que le fichier est >2Mo vu que $fichier n'est pas vide, donc il existe { header("Location: saisie_stat_2.php?titre=$titre&soustitre=$soustitre&texte=$texte"); exit; } $sql1 = "INSERT INTO ..........................
Et le 2° script de testé :
$fichier = basename($_FILES['monfichier']['name']); if (!empty($fichier)) { $size=$_FILES['monfichier']['size']; if ((!empty ($fichier)) && ($size == 0)) //-----Là, si $size=0, c'est que le fichier est >2Mo vu que $fichier n'est pas vide, donc il existe { $erreur = 'Le fichier est trop gros...'; echo $erreur; exit; } $sql1 = "INSERT INTO .........................
Pour le premier test, le script saisie_stat_2.php contient un code javascript qui affiche une alerte en pop-pup.
Auriez-vous une solution à me proposer ?
Pourquoi ça ne fonctionne pas online ?
Merci
A voir également:
- Afficher une alerte
- Fausse alerte mcafee - Accueil - Piratage
- Afficher appdata - Guide
- Afficher taille dossier windows - Guide
- Windows 11 afficher d'autres options - Guide
- Message alerte virus google chrome - Accueil - Virus
5 réponses
$size=$_FILES['monfichier']['size']; if ((!empty ($fichier)) && ($size == 0)) //-----Là, si $size=0, c'est que le fichier est >2Mo vu que $fichier n'est pas vide, donc il existe
La condition $size==0 vérifie si la $size est égal à 0.
Si tu veux vérifier que le fichier soit inférieur à 2Mo il faut faire comme suis:
$size=$_FILES['monfichier']['size']; // 1Ko = 1024 octets, 1Mo = 1024Ko // 1Mo = 1024 x 1024 = 1048576 octets. $size= ($size/1024)/1024; // Poids en Mo. if($size>2) { echo'Erreur, fichier trop lourd ('.$size.'). Le poid doit être inférieur à 2Mo.'; } else{ // Upload }
Ben non, ça ne fonctionne pas !
Si le fichier est >=2, size = 0, mais size n'affe pas 2 ou supérieur !
J'ai également essayé avec if($size==0), mais je n'ai toujours pas d'alerte ...... :o(
Si le fichier est >=2, size = 0, mais size n'affe pas 2 ou supérieur !
J'ai également essayé avec if($size==0), mais je n'ai toujours pas d'alerte ...... :o(
En fait, sur Free, par défaut upload_max_filesize vaut 2Mo dans le php.ini, donc on ne peut outrepasser cette limite. Et si le fichier la dépasse, le script se déroule sans rien faire !
Mais y a t'il quand même possibilité de tester le poids du fichier si celui-ci dépasse les 2Mo, afin de faire apparaitre une alerte dans ce cas ?
Si on crée une alerte à partir de 1,8Mo, celle-ci agira jusqu'à 2Mo. Puis elle deviendra inéficace.
Comment faire ?
Mais y a t'il quand même possibilité de tester le poids du fichier si celui-ci dépasse les 2Mo, afin de faire apparaitre une alerte dans ce cas ?
Si on crée une alerte à partir de 1,8Mo, celle-ci agira jusqu'à 2Mo. Puis elle deviendra inéficace.
Comment faire ?
Tu as la réponse sur cette page: http://phpcodeur.net/articles/php/upload
Cette valeur est retourné par $_FILES['fichier']['error'], il faut donc contrôler la valeur de cette variable avant de passer à la suite.
UPLOAD_ERR_INI_SIZE Valeur : 1; Le fichier excède le poids autorisé par la directive upload_max_filesize de php.ini
Cette valeur est retourné par $_FILES['fichier']['error'], il faut donc contrôler la valeur de cette variable avant de passer à la suite.
UPLOAD_ERR_OK Valeur : 0; Aucune erreur, le fichier a bien été uploadé
J'ai testé le résultat de "UPLOAD_ERR_INI_SIZE"
(en local et chez Free).
Avec un fichier >2Mo (2,008Mo) : UPLOAD_ERR_INI_SIZE=1
Avec un fichier <2Mo (195Ko) : UPLOAD_ERR_INI_SIZE=1 ??????????
echo UPLOAD_ERR_INI_SIZE;
(en local et chez Free).
Avec un fichier >2Mo (2,008Mo) : UPLOAD_ERR_INI_SIZE=1
Avec un fichier <2Mo (195Ko) : UPLOAD_ERR_INI_SIZE=1 ??????????
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le upload_max_filesize est limité à 2Mo chez Free, et la plupart des serveurs. Chez moi il est aussi à 2Mo. Mais chez Free, si le fichier atteint cette valeur, plus rien n'est possible ...... !!!!!!
Ce qu'il faudrait, c'est tester le poids du fichier avant l'upload !!!!! Mais comment ? J'ai cherché, et apparemment ce n'est pas possible !
Mon script d'upload avec $_FILES['monfichier']['size'], est dans mon post d'origine.
Sinon, j'ai essayé avec ($_FILES['monfichier']['error'])
:
Mais le résultat, c'est pareil. Ca fonctionne en local, mais pas chez Free ......
Comment tester le poids du fichier avant l'envoie ?
Ce qu'il faudrait, c'est tester le poids du fichier avant l'upload !!!!! Mais comment ? J'ai cherché, et apparemment ce n'est pas possible !
Mon script d'upload avec $_FILES['monfichier']['size'], est dans mon post d'origine.
Sinon, j'ai essayé avec ($_FILES['monfichier']['error'])
:
$texte = $_POST['texte']; $monfichier = $_POST['monfichier']; if($_FILES['monfichier']['error'] <> 0) { switch($_FILES['monfichier']['error']) { case 1: echo'<center><h1>Le fichier dépasse la limite autorisée !</h1><p> <input type="button" name="lien" value="Retour" onClick="self.location.href=\'javascript:history.back()\'"></center>'; //par le serveur exit; case 2: echo'<center><h1>Le fichier dépasse la limite autorisée !</h1><p> <input type="button" name="lien" value="Retour" onClick="self.location.href=\'javascript:history.back()\'"></center>'; //par le script exit; case 3: echo'<center><h1>L\'envoi du fichier a été interrompu pendant le transfert pour une raison inconnu. Réessayer plus tard ..... !</h1><p> <input type="button" name="lien" value="Retour" onClick="self.location.href=\'javascript:history.back()\'"></center>'; exit; case 4: //--------pas de fichier à uploader ! -------- $sql1 = "INSERT INTO ............................. break; } } else { $sql1 = "INSERT INTO..................
Mais le résultat, c'est pareil. Ca fonctionne en local, mais pas chez Free ......
Comment tester le poids du fichier avant l'envoie ?