web-dev-qa-db-fra.com

Empêcher le téléchargement d'images volumineuses

Je souhaite empêcher les utilisateurs de mon blog de télécharger des images de grande taille. Et je veux dire large en px pas MB. Max Upload est réglé sur 8 Mo, ce qui devrait être correct, mais je ne veux pas empêcher le téléchargement d'images de plus de 3000x3000px.

Y a-t-il un crochet qui me manque et pour lequel je pourrais écrire une fonction permettant d'indiquer aux utilisateurs que leur image est trop grande?

4
spankmaster79

Vous avez plusieurs solutions disponibles ici:

Réduire automatiquement

Si vous ne souhaitez pas stocker d’énormes quantités de données d’image sur votre espace Web, je vous recommande le plug-in Imsanity . Cela réduit automatiquement les images téléchargées, même si elles sont trop grandes.

Interdire d'importants téléchargements

Dans ce cas, l'utilisateur a plus de travail à faire, car il devra réduire les images lui-même. Vous pouvez filtrer le wp_handle_upload_prefilter:

add_filter('wp_handle_upload_prefilter', 'f711_image_size_prevent');
function f711_image_size_prevent($file) {
    $size = $file['size'];
    $size = $size / 1024; // Calculate down to KB
    $type = $file['type'];
    $is_image = strpos($type, 'image');
    $limit = 5000; // Your Filesize in KB

    if ( ( $size > $limit ) && ($is_image !== false) ) {
        $file['error'] = 'Image files must be smaller than '.$limit.'KB';
    }

    return $file;

}

Changer les valeurs PHP

Celui-ci est assez simple, il vous suffit de définir max_upload_size dans votre .htaccess ou php.ini.

9
fischi