2012-06-29 35 views
0

當我使用finfo_open(FILEINFO_MIME_TYPE)時,我用來獲得不同的MIMI類型。更改MIMI類型定義?

例如,基於內存,我相信docx是application/vnd.openxmlformats-officedocument.wordprocessingml.document(請參閱此StackOverflow後What is a correct mime type for docx, pptx etc?)。我還記得他們顯示爲應用程序/ zip,但可能是使用mime_content_type()時。另外,認爲js文件是作爲application/x-javascript發佈的。

下面是我現在正在與顯示它們的腳本相處。我最近更新到PHP 5.14,並想知道是否有新的標準或我是否搞砸了。我很好,但將不得不改變我的腳本比較擴展到MIMI類型。

編輯 - 剛剛在PHP手冊中找到以下內容。

從PHP> = 5.3.11和> = 5.4.1開始,魔術數據庫格式有 已更改。由於這個原因,內部的mime數據庫被升級了。這個 尤其影響讀取外部魔法的代碼。在舊格式的魔法文件中讀取 將不起作用。另外,一些文本類型的文本 已經改變,例如對於PHP 將是「PHP腳本,ASCII文本」而不​​是「PHP腳本文本」 返回。

謝謝

MIMI列表基於以下腳本

- directory 
csv - text/plain 
doc - application/msword 
docx - application/msword 
htm - text/html 
ini - text/plain 
jpg - image/jpeg 
js - text/plain 
mp3 - application/octet-stream 
pdf - application/pdf 
php - text/html 
pptx - application/vnd.ms-powerpoint 
pst - application/octet-stream 
so - application/x-sharedlib 
txt - text/plain 
wmv - video/x-ms-asf 
xls - application/msword 
xlsx - application/vnd.ms-excel 
zip - application/zip 

PHP代碼

<?php 
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension 
foreach (glob("*") as $filename) { 
    $files[pathinfo($filename, PATHINFO_EXTENSION)]=array('filename'=>$filename,'finfo'=>finfo_file($finfo, $filename)); 
} 
ksort($files); 
foreach ($files as $fileext=>$file) { 
    echo ($fileext.' - '.$file['finfo'].'<br />'); 
} 
finfo_close($finfo); 
?> 

回答

0

印刷將有所不同根據系統配置的MIME類型。如果系統配置爲在MSWord中打開.docx文件,則它將具有application/msword作爲MIME類型。同樣,如果將相同的擴展名.docx配置爲在LibreOffice中打開,則它將具有application/vnd.openxmlformats-officedocument.wordprocessingml.document作爲mime類型。

由於這種依賴於服務器的配置,MIME類型不是非常可靠。

+0

什麼是最常見的配置?有沒有更好的方法來確保上傳文件的擴展名與文件類型匹配? – user1032531