web-dev-qa-db-fra.com

Comment puis-je empêcher le téléchargement d'une image bmp?

Je dois empêcher le téléchargement de l'image bmp pour l'utilisateur. Comment cela peut-il être possible?

3
mha

J'ai trouvé la solution à partir d'ici . Et ça marche!

WordPress dispose d'un ensemble de types de fichiers restreints qu'il vous permettra de télécharger via la médiathèque. Bien qu’il s’agisse d’une fonctionnalité de sécurité efficace, il peut arriver que vous souhaitiez ajouter d’autres fichiers restreints par défaut, ou même au contraire, autorisant uniquement le téléchargement de quelques extensions. Heureusement, WordPress facilite cette tâche avec un petit extrait de code PHP.

Si vous souhaitez ajouter ou supprimer un type de fichier spécifique pouvant être chargé sur wordpress via la médiathèque, vous pouvez insérer ce code PHP dans votre fichier de fonctions theme.php:


function my_myme_types($mime_types){
//Adjust the $mime_types, which is an associative array
//where the key is extension and value is mime type.
    return $mime_types;
}
add_filter('upload_mimes', 'my_myme_types', 1, 1);

Voici un exemple de ce que vous pouvez faire pour ajouter et supprimer un nouveau type de fichier (dans cet exemple, j’ajoute une extension qui existe déjà, mais le concept est le même):


function my_myme_types($mime_types){
    $mime_types['avi'] = 'video/avi'; //Adding avi extension
    unset($mime_types['pdf']); //Removing the pdf extension
    return $mime_types;
}
add_filter('upload_mimes', 'my_myme_types', 1, 1);

Vous pouvez également réinitialiser les types de fichiers autorisés en créant un nouveau tableau dans la fonction et en renvoyant les valeurs suivantes:


function my_myme_types($mime_types){
    //Creating a new array will reset the allowed filetypes
    $mime_types = array(
        'jpg|jpeg|jpe' => 'image/jpeg',
        'gif' => 'image/gif',
        'png' => 'image/png',
        'bmp' => 'image/bmp',
        'tif|tiff' => 'image/tiff'
    );
    return $mime_types;
}
add_filter('upload_mimes', 'my_myme_types', 1, 1);

Si vous souhaitez voir quels types de fichiers sont actuellement pris en charge par wordpress, consultez la fonction get_allowed_mime_types située dans le fichier wp-includes/functions.php.

3
mha

La magie est dans get_allowed_mime_types() qui appelle le filtre upload_mimes. Cela filtre un tableau par défaut composé de clés en tant qu’expression régulière non-terminée d’extensions de fichier et le type mime mappé en tant que valeurs:

array(
    'jpg|jpeg|jpe' => 'image/jpeg',
    'gif' => 'image/gif',
    'png' => 'image/png',
    'bmp' => 'image/bmp',
    'tif|tiff' => 'image/tiff',
    'ico' => 'image/x-icon',
    ....
}

donc accrocher dans ce filtre et supprimer bmp devrait faire le travail pour le moment:

/** prevent uploading of .bmp files. */
add_filter('upload_mimes', function(array $mimes)
    { 
        unset($mimes['bmp']);
        return $mimes;
    })
    ;

Copiez simplement cela dans un fichier nommé no-bmp-upload.php et placez-le dans le dossier wp-content\mu-plugins.

8
hakre