我在共享主机上,并且一直在与他们争夺文件信息的工作,我们终于让它工作了,但我又遇到了另一个障碍,我基本上得到了这个,因为我正在创建一个新的文件上传工具,我们需要知道正在上传哪些 mimetype,但 fileinfo 不想玩球。
因此,.sql 文件将返回 text/plain,正确。
但是,所有其他文件都会简单地返回 application/octet-stream,我想知道为什么会这样,我不想用大量问题惹恼主持人,所以我想对这个问题进行一些研究在我进一步麻烦他们之前。
代码:
function get_mime($filename)
{
$result = new finfo(FILEINFO_MIME_TYPE, "/usr/share/file/magic.mime");
return $result->file($filename, FILEINFO_MIME_TYPE);
}
echo $user->get_mime($_FILES['file']['tmp_name'][$i]);
任何帮助将不胜感激,非常感谢
更新
所以我已经着手更新 MIMETYPE 检查的代码,并且我已经更新了代码以反映以下内容(对于函数):
function get_mime($filename)
{
$result = new finfo(FILEINFO_MIME_TYPE, "/usr/share/file/magic.mime"); // return mime type ala mimetype extension
if (is_resource($result) === true)
{
return $result->file($filename, FILEINFO_MIME_TYPE);
} else {
return "failed";
}
return false;
}
显然,如您所见,当它失败时,我已使其输出失败。这发生在 100% 的时间里,删除 if 语句会导致它返回 application/octet-stream,这是不正确的。
上传过程将是:用户上传 -> 文件被移动到公共上方的临时文件夹,(upload_check)将由fileinfo检查文件,如果文件不是我们接受的文件将被丢弃,否则将被复制到公共文件,然后从临时文件夹中丢弃。
我已经创建了该进程,但 fileinfo 仍然不想合作并为所有内容返回 application/octet-stream,即使它们位于刚刚保存在 public_html 文件夹上方的服务器上。
有什么建议吗?
杰克