この記事では、phpでファイルのMIMEタイプを正確に取得する方法について説明します。皆さんの参考に共有してください。具体的な実装方法は以下の通りです
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
$mime = 配列 ( //アプリケーション 'ai' => '申請書/追記', 'eps' => 'アプリケーション/追記', 'exe' => 'アプリケーション/オクテットストリーム', 'doc' => 'application/vnd.ms-word', 'xls' => 'application/vnd.ms-excel', 'ppt' => 'application/vnd.ms-powerpoint', 'pps' => 'application/vnd.ms-powerpoint', 'pdf' => 'アプリケーション/pdf', 'xml' => 'アプリケーション/xml', 'odt' => 'application/vnd.oasis.opendocument.text', 'swf' => 'application/x-shockwave-flash', // アーカイブ 'gz' => 'application/x-gzip', 'tgz' => 'application/x-gzip', 'bz' => 'application/x-bzip2', 'bz2' => 'application/x-bzip2', 'tbz' => 'application/x-bzip2', 'zip' => 'アプリケーション/zip', 'rar' => 'application/x-rar', 'tar' => 'application/x-tar', '7z' => 'application/x-7z-compressed', // テキスト 'txt' => 'テキスト/プレーン', 'php' => 'text/x-php', 'html' => 'text/html', 'htm' => 'text/html', 'js' => 'テキスト/javascript', 'css' => 'テキスト/css', 'rtf' => 'text/rtf', 'rtfd' => 'text/rtfd', 'py' => 'text/x-python', 'java' => 'text/x-java-source', 'rb' => 'text/x-ruby', 「し」=> 'text/x-shellscript', 'pl' => 'text/x-perl', 'sql' => 'text/x-sql', //画像 'bmp' => 'image/x-ms-bmp', 'jpg' => '画像/jpeg', 'jpeg' => '画像/jpeg', 'gif' => '画像/gif', 'png' => '画像/png', 'tif' => '画像/ティフ'、 'tiff' => '画像/ティフ'、 'tga' => 'image/x-targa', 'psd' => 'image/vnd.adobe.photoshop', //オーディオ 'mp3' => 「オーディオ/MPEG」、 '中旬' => 「オーディオ/MIDI」、 'ogg' => 「オーディオ/ogg」、 'mp4a' => 「オーディオ/mp4」、 'wav' => 「オーディオ/wav」、 'wma' => 'audio/x-ms-wma', //ビデオ 'avi' => 'ビデオ/x-msvideo'、 'dv' => 「ビデオ/x-dv」、 'mp4' => 'ビデオ/mp4'、 'mpeg' => 'ビデオ/mpeg'、 'mpg' => 'ビデオ/mpeg'、 'mov' => 「ビデオ/クイックタイム」、 「うーん」=> 'video/x-ms-wmv', 'flv' => 「ビデオ/x-flv」、 'mkv' => 「ビデオ/x-マトロスカ」 ); 関数 _getMimeDetect() { if (class_exists('finfo')) { 「finfo」を返す; } else if (function_exists('mime_content_type')) { 「mime_content_type」を返す; } else if ( function_exists('exec')) { $result = exec('file -ib '.escapeshellarg(__FILE__)); if ( 0 === strpos($result, 'text/x-php') OR 0 === strpos($result, 'text/x-c++')) { 「linux」を返す; } $result = exec('file -Ib '.escapeshellarg(__FILE__)); if ( 0 === strpos($result, 'text/x-php') OR 0 === strpos($result, 'text/x-c++')) { 「bsd」を返す; } } 「内部」を返す; } function _getMimeType($path) { グローバル $mime; $fmime = _getMimeDetect(); スイッチ($fmime) { ケース「finfo」: $finfo = finfo_open(FILEINFO_MIME); if ($finfo) $type = @finfo_file($finfo, $path); 休憩; ケース 'mime_content_type': $type = mime_content_type($path); 休憩; ケース「Linux」: $type = exec('file -ib '.escapeshellarg($path)); 休憩; ケース「bsd」: $type = exec('file -Ib '.escapeshellarg($path)); 休憩; デフォルト: $pinfo = パス情報($path); $ext = isset($pinfo['extension']) ? strto lower($pinfo['extension']) : ''; $type = isset($mime[$ext]) ? $mime[$ext] : '不明'; 休憩; } $type =explode(';', $type); //mime_content_type関数を使用した場合に存在しない$pathを取得すると'application/octet-stream'が返されるため、このセグメントを追加する必要があります if ($fmime != 'internal' AND $type[0] == 'application/octet-stream') { $pinfo = パス情報($path); $ext = isset($pinfo['extension']) ? strto lower($pinfo['extension']) : ''; if (!empty($ext) AND !empty($mime[$ext])) { $type[0] = $mime[$ext]; } } $type[0] を返す; } $path = '1.txt'; //实际上当前路径并不存在1.txt var_dump(_getMimeType($path)); /*php の終わり*/ |
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。