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
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.
There seems to be a bug in this getID3 libary; at least in the current version getid3-1.9.5-20130220
.
If you open the file module.archive.zip.php
and change the block
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';
}
to
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';
}
(i.e. change $ThisFileInfo
to $info
)
the mime type changes from application/zip
to application/vnd.openxmlformats-officedocument.wordprocessingml.document
for a word .docx