bmpファイルがアップロードできない
WordPressでbitmapのファイルをアップロードしようとしたら
「セキュリティ上の理由によりこのファイル形式は許可されません」
と表示された。
上記のエラーは拡張子が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を確認してみよう。