2011-06-06 156 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> 
相关问题