mediaプラグイン応用(9) 元のファイル形式を保持して縮小
mediaプラグインでVersionファイルは、core.phpなどでconvertに設定した形式で出力されます。
元のファイル形式ままで出力する設定を追加しました。
注:この記事は、Viewで呼び出し時にVersionファイルを作成する 改修済みのソースをベースに記載しています。
MediaプラグインにファイルのmimeTypeを判別するライブラリが同梱されているので、それを使います。
使い方は、Mediaビヘイビアの357〜372行目付近を参考に。
app/plugins/media/libs/upfile.php
@@ -4,6 +4,7 @@ */ App::import('Core', 'Shell'); +App::import('Vendor', 'Media.MimeType'); @@ -38,8 +39,16 @@ class Upfile extends Object { // mimeType設定 if (isset($options['mime_type']) && !empty($options['mime_type'])) { + if ($options['mime_type'] == 'original') { + $File = new File(MEDIA. $orig_filepath); + if (!$File->readable()) { + return false; + } + $options['mime_type'] = MimeType::guessType($File->pwd()); + } $filter[$dir]['convert'] = $options['mime_type']; } Configure::write('Media.filter.'. strtolower($name), array($dir => $filter[$dir]));
以上で、core.phpなどに'convert' => 'original'を指定すれば、元ファイルのmimeTypeと同じ形式でVersionファイルが出力されます。