仅使用JavaScript和像dojo / jQuery这样的框架,是否有一种方法可以找到特定文件名扩展名的内容类型?
比如说,如果我输入字符串“something.pdf”,我想显示一个提示框,上面写着“application/pdf”
或者“something.html”时显示“text/html”?
仅使用JavaScript和像dojo / jQuery这样的框架,是否有一种方法可以找到特定文件名扩展名的内容类型?
比如说,如果我输入字符串“something.pdf”,我想显示一个提示框,上面写着“application/pdf”
或者“something.html”时显示“text/html”?
你可以使用node-mime。
<script src="https://wzrd.in/standalone/mime@latest"></script>
<script>
mime.getType("something.pdf"); // etc.
<script>
我认为你需要自己维护映射关系(你可以通过XHR获取物理文件,但我不认为你想这样做)...
(function() {
var extToMimes = {
'img': 'image/jpeg',
'png': 'image/png',
...
}
window.getMimeByExt = function(ext) {
if (extToMimes.hasOwnProperty(ext)) {
return extToMimes[ext];
}
return false;
}
})();
如果你的映射中不存在,它会返回false
。如果你愿意,你可以直接返回extToMimes[ext]
,如果不存在,它将返回undefined
。它还不会意外获取原型链上的东西。
如果它是一个文件input
,也有访问它的选项。
var mime = $('input[type="file"]').prop('files')[0].file;
请注意,扩展名和MIME类型之间的对应关系并不能保证文件本身的实际类型;您需要在服务器端解析它以确定它是什么类型的文件。
https://wzrd.in/standalone/mime@latest 目前无法使用,因此必须使用以下内容:
<script>
import mime from 'https://cdn.skypack.dev/mime';
console.log( mime.getType("file.jpg"));
</script>