ContentType : 指內容型別,一般指網頁中的ContentType,用於定義網路檔案的型別和網頁的編碼,決定瀏覽器將以什麼形式,什麼編碼讀取檔案。

   副檔名(Extension):副檔名是作業系統用來標示檔案格式的一種機制。

 

   通常情況下通過副檔名就能大致的推斷出檔案的內容型別,不過這不是絕對的,因為副檔名通常可以人為設定而不會影響到檔案的內容型別。

  我們可以檢視Http ContentType與副檔名對照表瞭解相關對照,還可以瞭解一下  MIME(Multipurpose Internet Mail Extensions)多用途網際網路郵件副檔名。

 

  Web開發中經常與ContentType打交道,瞭解Tomcat Web容器的話可以在其conf/web.xml檢視MIME的對映資訊,比如:

 

<mime-mapping>
        <extension>png</extension>
        <mime-type>p_w_picpath/png</mime-type>
    </mime-mapping>

  另外可以檢視開源中國提供的Http ContentType 對照表:http://tool.oschina.net/commons

     下面說說在開發中遇到的一個問題:

     通常情況下我們是通過解析一個檔案來獲取它的ContentType, 而當Http請求獲取檔案,從得到的響應資訊中獲取到ContentType值之後,該以什麼樣的檔案型別保持資料呢?這個時候就得用到ContentType對映Extension。

    有一個實際案例,我在使用七牛雲端儲存的時候,上傳一個檔案(“app.png”), 根據上傳規則,我需要設定一個key(也就是雲端儲存中的檔名),如果key是一個不帶擴充套件的名的檔名,那麼我在應用程式中做一次請求(http://secondriver-dev.qiniudn.com/1399965230092)的時候,該以什麼樣的副檔名來儲存這個檔案,當然即使儲存檔案不設定副檔名,對於檔案的內容沒有影響,只是在開啟檔案的時候需要選擇開啟檔案的應用程式。

   下面將開源中國提供的Http ContentType對照表提取出來,做成Java類。

   參見附件: MIME檔案,Extension與ContentType(使用時去掉 .txt字尾)。

    下面是通過PHP指令碼解析MIME,來提取其中的Extension=ContentType對。

    

<?php

    $file=`MIME.txt`;
    $resource=fopen($file, `r`);
    $i=0;
    $extension_array=[];
    $contenttype_array=[];
    $map=[];

    while(false!=($string=fgets($resource))){
        $array=explode(" ", $string);
        $result=validate_array($array);
        if(!$result){
            echo `存在不合格的字串`;
        }else{
            $e1=trim($array[0]);
            $c1=trim($array[1]);
            $e2=trim($array[2]);
            $c2=trim($array[3]);
            
            $map[$e1]=$c1;
            $map[$e2]=$c2;
            
            $extension_array[$i]=$e1;
            $contenttype_array[$i]=$c2;

            $extension_array[$i+1]=$e2;
            $contenttype_array[$i+1]=$c2;
        }
        $i=$i+2;
    }

    var_dump($map);
    echo "<hr/>";
    print_array($extension_array);
    echo "<hr/>";
    print_array($contenttype_array);

    function print_array($array){
        for($i=0, $length=sizeof($array); $i<$length; $i++){
            echo `"`.$array[$i].`"`;
            if($i != $length-1){
                echo ", ";
            }
        }
    }

    function validate_array($array){
        if(sizeof($array)!=4){
            return false;
        }else{
            foreach ($array as $key => $value) {
                if($value === " "){
                    return false;
                }
            }
            return true;
        }
    }
    echo `<h1>一共`.$i.`條對映</h1>`;
    fclose($resource);
?>

  
通過上面PHP程式碼解析MIME檔案,就可以根據具體需要來使用Extension與ContentType對映。