2013-05-12 59 views
7

我一直在PHP文檔中四處尋找一段時間,但我找不到將MIME類型擴展名轉換爲文件類型擴展名的方法。將MIME類型轉換爲文件擴展名PHP

image_type_to_extension 

似乎工作,如果該文件是一個圖像。在我的特殊情況下,MIME類型不適用於圖像,它們適用於字體類型:'otf,ttf'。

+0

並非每個MIME類型都有固定的文件擴展名。我會創建一個文件擴展名的陣列,用於您的系統將要處理的每種MIME類型 – 2013-05-12 19:10:16

+0

OTF字體沒有標準MIME類型 – 2013-05-12 19:15:16

+0

當然有:'application/x-font-otf' – 2013-05-12 19:16:32

回答

16

您可以使用類似:

function getExtension ($mime_type){ 

    $extensions = array('image/jpeg' => 'jpeg', 
         'text/xml' => 'xml' 
         ); 

    // Add as many other Mime Types/File Extensions as you like 

    return $extensions[$mime_type]; 

} 

注意:不是每一個MIME類型有一個固定的文件擴展名。此外,像application/octet-stream這樣的MIME類型可以引用多個文件擴展名。

+0

你,我不知道八位字節流涉及多個文件擴展名。也許我應該找到一種方法來發送文件名,雖然現在它是「blob」,因爲將dataURL轉換爲blob,但我可以更改文件名,但它在firefox中不起作用:http://stackoverflow.com/questions/8495301/changing-filename-in-blobbuilder -s-pass-as-formdata-on-xhr – TaylorMac 2013-05-12 19:23:56

+11

如果你決定走這條路線,下面是一個相當詳盡的列表,讓你開始:https://github.com /EllisLab/CodeIgniter/blob/develop/application/config/mimes.php – xbonez 2013-05-12 19:32:41

+0

對於像我這樣遲到的人來說,這裏有一個專門的庫來完成這個工作:https://github.com/dflydev/dflydev-apache-mime -types – Romain 2016-05-02 09:51:58

-2

不確定這個文件是否會始終返回正確的文件擴展名,但是您可以使用pathinfo()從文件名獲得擴展名,而不是轉換mime_types。

$Extension = pathinfo(basename($_FILES['image']['name']), PATHINFO_EXTENSION); 

echo $Extension; 
6

首先獲取圖像的$ mime類型,然後用'/'分解字符串,這將返回一個數組。

$extension = explode('/', $mime)[1]; 
+0

我想知道這個解決方案是否可以工作。但它會因爲MIME類型總是有2個部分用「/」分開。 MIME類型的完整列表,可以證明它https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types – BoCyrill 2017-08-21 11:48:26

+0

是的,不是放置一些MIME類型,它可以簡單地像這樣完成.... – 2017-08-21 11:54:29