0

この次のメソッドをGetID3MIMEtype('test.docx')と呼んでいます。このメソッドは、ファイルタイプを「application / zip」に変更しますが、このファイルタイプが正しくないzipファイルをアップロードしません。

 function GetID3MIMEtype($filename) {
      $filename = realpath($filename);
      $getID3 = new getID3;
      $ThisFileInfo = $getID3->analyze($filename);
      getid3_lib::CopyTagsToComments($ThisFileInfo);      
      log_error(print_r($ThisFileInfo['mime_type'], true));
      if (empty($ThisFileInfo['error'])) {
         if ($ThisFileInfo['fileformat']) {
            $temp = explode("/", $ThisFileInfo['mime_type']);
            $mime = $temp[0]."/".$ThisFileInfo['fileformat'];
         }
         else
            $mime = $ThisFileInfo['mime_type'];
         return $mime;
      }
      else {
         log_error("ID 3 Error - ".$filename." - ".print_r($ThisFileInfo['error'], true));
         return false;
      }
   } 

質問

  1. getID3クラスとは
  2. このクラスがファイルの鉱山タイプを変更する理由
4

2 に答える 2

3

.docxファイルzipファイルです。名前を変更して開いてみて.zipください。XMLやその他の埋め込みドキュメントのコレクションであることがわかります。

とはいえ、プロジェクトページgetId3に記載されているように、マルチメディアファイルタイプ(ビデオファイルとオーディオファイル)で使用するように設計されています

鉱山タイプではなく、鉱山タイプです。これはファイル拡張子に似ていますが、より強力です。これにより、さまざまなアプリケーション(おそらくさまざまなプラットフォーム上)が特定のファイルの処理方法を知ることができます。詳細については、このページをお読みください。

于 2013-03-27T08:49:26.847 に答える
1

このgetID3ライブラリにはバグがあるようです。少なくとも現在のバージョンではgetid3-1.9.5-20130220

ファイルを開いてmodule.archive.zip.phpブロックを変更した場合

if (!empty($ThisFileInfo['zip']['files']['ppt'])) {
  $info['mime_type'] = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
} elseif (!empty($ThisFileInfo['zip']['files']['xl'])) {
  $info['mime_type'] = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
} elseif (!empty($ThisFileInfo['zip']['files']['word'])) {
  $info['mime_type'] = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
}

if (!empty($info['zip']['files']['ppt'])) {
  $info['mime_type'] = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
} elseif (!empty($info['zip']['files']['xl'])) {
  $info['mime_type'] = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
} elseif (!empty($info['zip']['files']['word'])) {
  $info['mime_type'] = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
}

(つまり、に変更$ThisFileInfoします$info

単語.docxのmimeタイプがからapplication/zipに変わりますapplication/vnd.openxmlformats-officedocument.wordprocessingml.document

于 2013-03-27T09:25:40.057 に答える