php:从损坏的文件中获取文件扩展名

时间:2015-07-03 17:19:11

标签: php file

由于脚本中的错误,我有一些文件以某种方式丢失了扩展名。所以现在,我有一个包含许多文件的文件夹,例如" image"或" 123"而不是" image.jpg"或" 123.pdf"。通过使用finfo,我可以抓住mime类型。 php中的类似内容也可以用于扩展,以便我可以以某种方式修复它们吗? (这只是文件名 - 文件没有损坏)

我当然可以创建一个包含可能文件类型的巨大数组。但这种方法不安全"因为有许多具有相同MIME类型的文件扩展名。

2 个答案:

答案 0 :(得分:0)

创建新目录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中输入并执行

这应该有用......

答案 1 :(得分:0)

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