[RESOLU] Afficher un message d'erreur quand le formulaire dépasse post_max_size du php.ini

Mammouth du PHP | 1014 Messages

12 nov. 2021, 13:55

Je tente de savoir à combien s'élève la somme des tailles de mes images que je souhaite envoyer via $.ajax(), mon problème est que quand je propose une image plus grand que post_max_size, mon ajax "s'envoie" bien sauf qu'il n'appelle pas la page demandée, il se contente de me dire "oui tout c'est bien passé", j'ai aucune info via var_dump($_FILES,$_POST) dans le fichier appelé.

Sur mon formulaire, j'ai la possibilité d'uploader des images, je me suis aperçu du problème quand j'ai voulu uploader plusieurs images en même temps et qui dépassées le post_max_size de mon php.ini (Je travail en local sur WAMP).

J'ai tenté les méthodes .done() et .fail() de jQuery mais il passe toujours par .done() et quelques fois c'est le fichier appelé qui m'affiche un message d'erreur venant de PHP, du style "Warning: POST Content-Length" mais très rarement. Du fait que ce soit très rare, je peux pas m'appuyer sur cette réponse aléatoire rare. Je bloque sur ce problème depuis hier.

J'ai bien tenté de faire une vérif des tailles d'images en envoyant le fichier via ajax, vérifier en PHP via $_FILES['input_name']['size'] et afficher un message d'erreur si le fichier est trop volumineux mais c'est le serpent qui se mord la queue car si l'image est plus grand que post_max_size, l'envoi ajax ne se fait pas, j'ai donc pas de moyen pour dire à l'utilisateur que ses images sont trop grandes, pour le moment du moins :) De plus le formulaire s'envoie pas alors qu'il est marqué "Formulaire bien envoyé".

EDIT: j'ai trouvé via FileList (.files), on peut demander la taille du fichier en faisant

Code : Tout sélectionner

input_files[0].files[0].size
je pensais qu'il existait seulement:

Code : Tout sélectionner

input_files[0].size
Qui donne pas la taille du fichier mais des éléments qu'ils contient ?