Comment imposer des tailles limites ou des poids limites aux documents et pièces jointes de Spip

Spip est un gestionnaire de contenu assez puissant qui est porté par une communauté francophone très active.
Grâce à celle ci, j’ai pu saisir au bond une info intéressante par rapport à certains soucis rencontrés.

En effet, Spip permet d’adjoindre des documents (images, mp3,doc, flv, gif, etc) aux articles créés, mais un souci revenait assez régulièrement par rapport à ces pièces jointes, notamment quand aux limites des choses possibles.

Par exemple, si vous faites monter un jpeg de 3400 sur 2800, Spip peut péter les plombs, parce qu’il va prendre trop de temps à générer la minature de cette image, et ramener une erreur.
Ou encore, l’utilisateur ne savant pas qu’il y a une limite, essaye de faire monter un fichier de 9Mo directement via le formulaire Ajouter un document à l’article (la méthode à employer étant alors d’uploader le document dans tmp/upload pour pouvoir le sélectionner apès dans l’admin.)

Bref, des soucis liés à la taille des documents (largeur x hauteur) et à leurs poids (fichiers trop lourds).

Or il existe une méthode afin de définir des limites aux documents joints.
Il faut définir dans le fichier mes_options.php (par défaut il n’existe pas dans Spip, vous devrez le créer) les variables suivantes en fonction de vos besoins

_COPIE_LOCALE_MAX_SIZE (en octets, par défaut 16777216)

_DOC_MAX_SIZE (en kilo-octets, par défaut pas de limite)

_IMG_MAX_HEIGHT (en pixels, par défaut pas de limite)
_IMG_MAX_WIDTH (en pixels, par défaut pas de limite)
_IMG_MAX_SIZE (en kilo-octets, par défaut pas de limite)

_LOGO_MAX_HEIGHT (en pixels, par défaut pas de limite)
_LOGO_MAX_WIDTH (en pixels, par défaut pas de limite)
_LOGO_MAX_SIZE (en kilo-octets, par défaut pas de limite)

ainsi, pour interdire la prise en compte par spip d’une image de plus de 1000 x 1000 pixels (le formulaire uploadera bien le fichier mais il sera détruit et spip n’en tiendra pas compte ni dans IMG/ ni en base de données,tout en envoyant un sympathique message d’avertissement à l’utilisateur) il faut déclarer dans mes_options.php :

define('_IMG_MAX_HEIGHT', 1000);
define('_IMG_MAX_WIDTH', 1000

pour interdire la prise en compte par spip d’une image de plus de 500 Ko :
define('_IMG_MAX_SIZE', 500);

pour interdire la prise en compte par spip d’un document de plus de 850 Ko :
define('_DOC_MAX_SIZE', 850);

Merci à arthegone pour cette info intéressante !

2 thoughts on “Comment imposer des tailles limites ou des poids limites aux documents et pièces jointes de Spip

  1. Notons que ces paramètres cachés de SPIP sont réglables via un plugin dédié, le Couteau KISS.

  2. Et que la configuration du php.ini impose souvent des limites :
    http://php.net/file-uploads, et en particulier
    http://php.net/upload-max-filesize

Laisser un commentaire