Max la taille de l'image sur un téléchargement de fichier
J'ai un ImageField dans mon formulaire. Comment pourrais-je appliquer un fichier de taille min/max, quelque chose comme --
image = forms.ImageField(max_size = 2MB)
ou
image = forms.ImageField(min_size = 100k)
Merci.
- double possible de Django Fichier taille limite de téléchargement
Vous devez vous connecter pour publier un commentaire.
models.py
forms.py
.size
pas._size
C'est un doublon de Django Fichier taille limite de téléchargement
Vous avez deux options:
Utiliser la validation en Django pour vérifier que le fichier téléchargé est de taille. Le problème avec cette approche est que le fichier doit être téléchargé complètement avant qu'elle soit validée. Cela signifie que si quelqu'un télécharge un 1 TO de fichier, vous aurez probablement à court d'espace sur le disque dur avant que l'utilisateur obtient une erreur.
Configurer le serveur Web pour limiter le permis de téléchargement de la taille du corps. par exemple, si vous utilisez Apache, définir la
LimitRequestBody
réglage. Cela signifie que si un utilisateur tente de télécharger trop, ils vont obtenir une page d'erreur configurable dans ApacheComme @pastylegs dit dans les commentaires, à l'aide d'une combinaison des deux est probablement la meilleure approche. Dites que vous voulez un maximum de 5 MO, peut-être appliquer une limite de 20 mo sur le serveur Web de niveau, et la limite de 5MO à la Django niveau. La limite de 20 mo offrirait une certaine protection contre les utilisateurs malveillants, alors que la limite de 5MO dans Django fournit une bonne UX.
Ici est une autre option que je n'avais pas voir à travers les variations de cette question sur stackoverflow: utiliser un validateur personnalisé dans vos modèles. Si vous utilisez cette technique et un ModelForm dans forms.py puis ce devrait être tout ce dont vous avez besoin.
models.py