我将此方法称为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;
}
}
问题
答案 0 :(得分:3)
.docx
文件 是一个zip文件 - 尝试将其重命名为.zip
并打开它。您将看到它是XML和其他嵌入式文档的集合。
尽管如此,getId3
旨在用于多媒体文件类型 - 视频和音频文件 - 正如project page
这是一个Mime类型而不是Mine类型。它类似于文件扩展名,但功能更强大。它允许不同的应用程序(可能在不同的平台上)知道应该如何处理特定的文件。请尝试阅读this page以获取更多信息。
答案 1 :(得分: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