php:从损坏的文件中获取文件扩展名
问题描述:
我有几个文件由于脚本中的错误而失去了扩展名。所以现在我有一个文件夹,里面有很多像“image”或“123”而不是“image.jpg”或“123.pdf”的文件。通过使用finfo,我可以抓住mime类型。在PHP中也有类似的东西可以扩展,以便我可以修复它们? (它只是文件名 - 文件没有被损坏)php:从损坏的文件中获取文件扩展名
我当然可以创建一个包含可能文件类型的巨大数组。但是这种方法不够“安全”,因为有很多文件扩展名具有相同的MIME类型。
答
创建新的目录recover..
,并尝试这个...
<?php
$fp = opendir("files/");
$typeDetect = array(
"filename" => "type",
);
while($file = readdir($fp)){
if(array_key_exists(pathinfo($file, PATHINFO_FILENAME), $typeDetect)){
echo $typeDetect[pathinfo($file, PATHINFO_FILENAME)] . "<br/>";
if(copy("files/" . pathinfo($file, PATHINFO_FILENAME), "recover/" . pathinfo($file, PATHINFO_FILENAME) . "." . $typeDetect[pathinfo($file, PATHINFO_FILENAME)])){
echo "Success";
}
}else{
echo "File not exists";
}
}
?>
添加文件名和类型的数组$typeDetect
并执行
这应该工作...
答
finfo_file ()可能会帮助你获得损坏文件的扩展名。
参考线以下代码:
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
foreach (glob("*") as $filename) {
echo finfo_file($finfo, $filename) . "\n";
}
finfo_close($finfo);
+0
我真的不认为这会对我有帮助 - 请看应用程序/ excel:它有大约12个可能的扩展名,所以不可能猜出哪一个是正确的... –
有了这个apporach,我需要找到所有可能的文件名,并将它们添加到数组,对不对? (我有这么多的可能性,这是无法完成的,我希望这可以通过一些读取文件的php函数来完成,并告诉我哪个扩展名最适合) –