func mimeTypeForPath(path: String) -> String {
let url = NSURL(fileURLWithPath: path)
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension! as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
}
return "application/octet-stream"
}
6 回答
以下是HTTP Content Streaming的正确Microsoft Office MIME类型:
有关详细信息,请查看此TechNet article和blog post .
或者,如果您在.Net v4.5或更高版本中工作,请尝试使用System.Web.MimeMapping.GetMimeMapping(yourFileName)获取MIME类型 - 比硬编码字符串要好得多
加载.docx文件
这是一个(几乎)完整的所有文件扩展名的MIME,采用JSON格式 . 举个例子:MIME [“ppt”],MIME [“docx”]等
Swift4
本文将探讨各种编程语言中获取MIME类型的各种方法,其中CONS在单行描述中作为 Headers . 所以,相应地使用它们和适合你的那个 .
例如 . 当用户提供.xls,.xlsx或.xlsm中的任何一个并且您不想编写代码测试扩展并为每个扩展提供MIME类型时,下面的代码特别有用 . 让系统完成这项工作 .
Python 3
使用python-magic
使用内置mimeypes模块 - 将文件名映射到MimeTypes模块
JAVA 7
资料来源:Baeldung's blog on File MIME Types in Java
依赖于操作系统
它将使用FileTypeDetector实现来探测MIME类型,并调用每个实现的probeContentType来解析该类型 . 因此,如果文件对于实现是已知的,则返回内容类型 . 但是,如果不发生这种情况,则会调用系统默认文件类型检测器 .
使用输入流的前几个字符解析
使用MIME类型的内置表
它返回URLConnection的所有实例使用的MIME类型矩阵,然后用于解析输入文件类型 . 但是,当涉及到URLConnection时,这种MIME类型矩阵非常有限 .
默认情况下,该类使用JRE_HOME / lib中的content-types.properties文件 . 但是,我们可以通过使用content.types.user.table属性指定特定于用户的表来扩展它:
JavaScript
资料来源:FileReader API&Medium's article on using Magic Numbers in JavaScript to get Mime Types
解释使用FileReader API获取的幻数
当使用javaScript基于文件流获取MimeType时,最终结果看起来像这样 . Open the embedded jsFiddle 看到并理解这种方法 .
Bonus :大多数MIME类型都可以访问它,也可以在 getMimetype 函数中添加自定义Mime类型 . 此外,它完全支持MS Office文件Mime类型 .
在此示例中,为文件计算mime类型的步骤如下:
用户选择一个文件 .
使用切片方法获取文件的前4个字节 .
创建一个新的FileReader实例
使用FileReader将您切出的4个字节读取为数组缓冲区 .
由于数组缓冲区只是表示二进制缓冲区的通用方法,我们需要创建一个TypedArray,在本例中是一个Uint8Array .
使用TypedArray,我们可以检索每个字节并将其转换为十六进制(通过使用toString(16)) .
我们现在有办法通过读取前四个字节来从文件中获取幻数 . 最后一步是将其映射到真实的mime类型 .
Browser Support (Above 95% overall and Close to 100% in all modern browsers) :