2011-10-05 68 views
0

我一直在網上衝刷,無法找到合理的解決方案來解決這個問題。使用PHP檢查上載文件的MIME類型。 mime_content_type,fileINfo,linux文件不可用

我試圖幫助客戶架着一起回來這是從另一臺主機移動到GoDaddy的共享主機的站點。

該網站使用CakePHP建成一個行使用mime_content_type,這是不可用此服務器上。 FILE命令也不是fileinfo。

我試過upgrade.php替代品,但它可能失敗,因爲它無法找到mime_magic。

PEAR的解決方案失敗,因爲文件不可用。

有沒有解決方法?

這裏唯一的目標是要找出一個文件是否爲PDF或不是,不是基於擴展。

PHP版本5.2.17

感謝這麼多。

回答

2

PDF文件總是%PDF-開始,這樣你就可以先讀取4個字節,並檢查他們相等。

function is_pdf($fn) { 
    $f = fopen($fn, 'rb'); 
    if ($f === false) return false; 
    $res = fread($f, 5) == '%PDF-'; 
    fclose($f); 
    return $res; 
} 

但是,它可能是更容易只是download的MIME魔力文件,並給它的名字finfo_open(PHP 5.3+)或配置mime_magic.magicfile,並使用mime_content_type

+0

finfo_open在5.3之前不可用。但閱讀文件是一個好主意。 – Jazzy

+0

@Jason哎呀,忘了你是在一箇舊的PHP版本。如果可能的話,更新到5.3 - 它的新功能(http://php.net/manual/en/migration53.new-features.php),而不是新功能的說明,早該過時了。無論如何,你也可以在php.ini中配置'mime_magic.magicfile'。用那個更新了答案。 – phihag

+0

這已經夠好了。我所做的只是將mime-magic上傳到與upgrade.php包中的mime.php相同的目錄中,並更改mime.php和voila中的mime-magic路徑。謝謝! – Jazzy

相關問題