仅使用JavaScript和框架(如dojo/jQuery)...有没有办法找到特定文件扩展名的内容类型?假设我键入字符串“something.pdf”,我希望显示一个提示“application/pdf”还是“something.html”显示“文本/html”
jexiocij1#
您可以使用node-mime
<script src="https://wzrd.in/standalone/mime@latest"></script> <script> mime.getType("something.pdf"); // etc. <script>
nwlls2ji2#
我认为您需要自己维护Map(您 * 可以 * 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不存在于你的Map中,它将返回false,如果你愿意,你可以只返回extToMimes[ext],如果undefined不存在,它将给予won't accidentally get things up the prototype chain。如果它是一个input文件,也有访问它的选项。
false
extToMimes[ext]
undefined
input
var mime = $('input[type="file"]').prop('files')[0].file;
记住,对mime类型的扩展并不能保证实际文件本身的安全;您需要在服务器端解析它以确定它实际上是什么类型的文件。
9rygscc13#
https://wzrd.in/standalone/mime@latest当前不可用,因此您必须用途:
<script> import mime from 'https://cdn.skypack.dev/mime'; console.log( mime.getType("file.jpg")); </script>
3条答案
按热度按时间jexiocij1#
您可以使用node-mime
nwlls2ji2#
我认为您需要自己维护Map(您 * 可以 * XHR一个物理文件并获得它,但我怀疑您是否愿意这样做)...
jsFiddle .
如果
false
不存在于你的Map中,它将返回false
,如果你愿意,你可以只返回extToMimes[ext]
,如果undefined
不存在,它将给予won't accidentally get things up the prototype chain。如果它是一个
input
文件,也有访问它的选项。记住,对mime类型的扩展并不能保证实际文件本身的安全;您需要在服务器端解析它以确定它实际上是什么类型的文件。
9rygscc13#
https://wzrd.in/standalone/mime@latest当前不可用,因此您必须用途: