2011-06-06 124 views
4

只使用JavaScript和框架如dojo/jQuery ...文件擴展名爲MIME類型

有沒有辦法找到特定文件擴展名的內容類型?

說,如果我在字符串「something.pdf」型,我想證明說「應用程序/ PDF」

或「something.html」秀「text/html的」警報?

回答

4

我認爲你需要自己保持的映射(你 XHR的物理文件,並得到它,但我懷疑你想這樣做)......

(function() { 

    var extToMimes = { 
     'img': 'image/jpeg', 
     'png': 'image/png', 
     ... 
    } 

    window.getMimeByExt = function(ext) { 
     if (extToMimes.hasOwnProperty(ext)) { 
      return extToMimes[ext]; 
     } 
     return false; 
    } 

})(); 

jsFiddle

如果映射中不存在,將返回false。如果你喜歡,你可以返回extToMimes[ext],如果它不存在undefined將會返回。它也won't accidentally get things up the prototype chain

如果它是一個文件input,還可以選擇訪問它。

var mime = $('input[type="file"]').prop('files')[0].file; 

請記住,MIME類型的擴展不能保證實際的文件本身;你需要解析它的服務器端來確定它真的是什麼類型的文件。

+0

只是想知道,如果這個答案仍然是正確的看到,因爲它是4歲?我們是否仍然需要自己維護映射? – Marklar 2015-07-19 22:47:34

+1

@Marklar如果你沒有要上傳的文件,但只是一個擴展名,我認爲你需要一個映射。但是,似乎有人正在維護一個[這裏](https://github.com/rsdoiel/mimetype-js)。 – alex 2015-07-21 01:19:52

+0

如果你有一個文件上傳?你使用XHR嗎? – Marklar 2015-07-21 02:19:34

0

可以使用node-mime

<script src="https://wzrd.in/standalone/[email protected]"></script> 
<script> 
    mime.getType("something.pdf"); // etc. 
<script> 
相關問題