web-dev-qa-db-ja.com

BMP画像がアップロードされないようにするにはどうすればよいですか。

ユーザーのbmp画像がアップロードされないようにする必要があります。どうすれば可能でしょうか。

3
mha

私はここから解決策 を見つけました 。そしてその働き!

WordPressには、メディアライブラリ経由でアップロードできるようになる一連の制限されたファイルタイプがあります。これは優れたセキュリティ機能ですが、デフォルトで制限されている他のファイルを追加したい場合や、わずかな拡張子のアップロードのみを許可したい場合は反対の場合もあります。幸いなことに、WordPressはPHPコードの小さな断片でこれを簡単にします。

メディアライブラリを介してwordpressにアップロードできる特定のファイルタイプを追加または削除したい場合は、このPHPコードをテーマのfunctions.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);

新しいファイルタイプを追加および削除するためにできることの例を次に示します(この例では、すでに存在する拡張子を追加していますが、概念は同じです)。


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);

関数内に新しい配列を作成してこれらの値を返すことで、許可されているファイルタイプをリセットすることもできます。


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);

現在ワードプレスでサポートされているファイルタイプを知りたい場合は、wp-includes/functions.phpファイルにあるget_allowed_mime_types関数を調べてください。

3
mha

マジックはupload_mimesフィルタを呼び出すget_allowed_mime_types()にあります。これは、ファイル拡張子の終端されていない正規表現としてのキーと、値としてのマッピングされたMIMEタイプからなるデフォルト配列をフィルタリングします。

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

そのため、そのフィルタにフックしてbmpを削除すると、しばらくの間仕事ができます。

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

それをno-bmp-upload.phpという名前のファイルにコピーして、それをwp-content\mu-pluginsフォルダーに入れるだけです。

8
hakre