Comment puis-je empêcher les utilisateurs de télécharger plus de 5 Mo sur le serveur?

J’ai une vérification en place via php pour déterminer si le fichier est trop gros, le problème est que l’utilisateur doit d’abord télécharger le fichier sur le serveur, avant de pouvoir effectuer la vérification.

Donc, si quelqu’un veut gaspiller ma bande passante, il ne lui rest plus qu’à renommer un fichier volumineux en .jpg, par exemple, et le télécharger. Et il n’y a rien que je puisse faire pour les arrêter

Il doit y avoir un moyen d’empêcher cela. Une sorte de chèque, de requête ou quelque chose de valable.

J’ai besoin d’une solution qui me permettrait d’informer l’utilisateur que le fichier qu’il tente de télécharger est trop volumineux.

Merci.

Si vous êtes préoccupé par le gaspillage de bande passante, vous devez le gérer à un niveau supérieur de votre stack de serveurs. Au moment où PHP gère le fichier, il est trop tard, le téléchargement a déjà eu lieu et la bande passante consommée.

Apache a quelques directives de configuration qui peuvent être utiles:

http://httpd.apache.org/docs/current/mod/core.html#limitrequestbody

Mais je ne suis pas sûr si même cela coupe réellement la demande lorsque le corps dépasse la limite. Sinon, vous devrez monter d’un niveau supérieur et le gérer au niveau TCP.

Si vous souhaitez emprunter une route autre que PHP pour essayer de bloquer les envois volumineux, vous devez demander à ServerFault au lieu de StackOverflow.

Vous pouvez utiliser cette fonctionnalité cachée: MAX_FILE_SIZE

Le champ masqué MAX_FILE_SIZE (mesuré en octets) doit précéder le champ de saisie du fichier et sa valeur correspond à la taille de fichier maximale acceptée par PHP. Cet élément de formulaire doit toujours être utilisé, car il évite aux utilisateurs d’attendre qu’un gros fichier soit transféré, mais découvre qu’il était trop volumineux et que le transfert a échoué. N’oubliez pas que tromper ce paramètre côté navigateur est assez simple, aussi ne vous fiez jamais à des fichiers de taille supérieure bloqués par cette fonctionnalité. C’est simplement une fonctionnalité pratique pour les utilisateurs du côté client de l’application. Les parameters PHP (côté serveur) pour une taille maximale ne peuvent toutefois pas être trompés.

détails: http://php.net/manual/en/features.file-upload.post-method.php

Vous pouvez limiter la taille maximale de téléchargement en tant que paramètre PHP. L’utilisateur pourra toujours télécharger jusqu’à cette taille jusqu’à l’annulation du serveur et il ne saura pas nécessairement que le fichier est trop volumineux à l’avance.

Je vous suggère d’examiner les fonctionnalités HTML. Voir MDN https://developer.mozilla.org/en/using_files_from_web_applications

Avec cela, vous pouvez vérifier la taille, etc. avec JavaScript.