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ファイルが出力されます。