開発

【WordPress】Bitmapの拡張子

2019年6月9日

bmpファイルがアップロードできない

WordPressでbitmapのファイルをアップロードしようとしたら
「セキュリティ上の理由によりこのファイル形式は許可されません」
と表示された。

bmpを上げようとするとエラーになる・・・

上記のエラーは拡張子がwordpressに対応するmime/typeが登録されていないため発生する。対応方法は

  • FTPでファイルをアップロードする
  • プラグインでmime/typeを見ないようにする
  • functions.phpの修正

の3つにて適用可能である。

bmpはfunctions.phpに既に登録済み

function.phpを確認してみると

function wp_get_mime_types() {
        /**
         * Filters the list of mime types and file extensions.
         *
         * This filter should be used to add, not remove, mime types. To remove
         * mime types, use the {@see 'upload_mimes'} filter.
         *
         * @since 3.5.0
         *
         * @param array $wp_get_mime_types Mime types keyed by the file extension regex
         *                                 corresponding to those types.
         */
        return apply_filters(
                'mime_types',
                array(
                        // Image formats.
                        'jpg|jpeg|jpe'                 => 'image/jpeg',
                        'gif'                          => 'image/gif',
                        'png'                          => 'image/png',
                        'bmp'                          => 'image/bmp',
                        'tiff|tif'                     => 'image/tiff',
                        'ico'                          => 'image/x-icon',
                        // Video formats.
                        'asf|asx'                      => 'video/x-ms-asf',
                        'wmv'                          => 'video/x-ms-wmv',
                        'wmx'                          => 'video/x-ms-wmx',
                        'wm'                           => 'video/x-ms-wm',
                        'avi'                          => 'video/avi',
                        'divx'                         => 'video/divx',
                        'flv'                          => 'video/x-flv',
                        'mov|qt'                       => 'video/quicktime',
・
・
・
                )
        );
}

とbmpは既に登録されている。
だけど、エラーになるので少し調査してみた。

bmpのmimetypeが異なっていた

では、実際にアップロードしようとしたbitmapのmimetypeは何なのか?
ということでphpではmimetypeの出力ができるので、下記のコードで確認してみた

<?php
echo mime_content_type("test.bmp");

出力結果:image/x-ms-bmp
WordPressとmimetypeが異なっているね

こちらを参照してみると
「 image/x-ms-bmp 」と「 image/x-bmp 」の2種類が存在するみたい。

「 image/x-ms-bmp 」 をfunction.phpに登録するとうまくアップロードできるようになりました。

最後に

アップロードできなくなったらmimetypeを確認してみよう。

-開発
-, ,