Search code examples
phpgetid3

Why mine type change in getID3


I'm calling this bellow method as GetID3MIMEtype('test.docx') That method change file type to "application/zip" but i'm not upload any zip file this not correct file type.

 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;
      }
   } 

Question

  1. What is getID3 class
  2. Why this class change file Mine Type

Solution

  • A .docx file is a zip file - try renaming it to .zip and opening it. You'll see it's a collection of XML and other embedded documents.

    That said, getId3 is designed to be used on Multimedia file types - video and audio files - as it says on the project page

    It's a Mime Type not a Mine Type. It's similar to a file extension but more powerful. It lets different applications (possibly on different platforms) know how a specific file should be handled. Try reading this page for more information.