如何在IOS中获取不基于扩展名的Mime类型

时间:2012-03-21 08:39:07

标签: ios stream mime-types

我们知道我们可以从文件的扩展名中获取文件的MIME TYPE,但它并不完全正确。例如,我们更改了文件的扩展名,我们将得到错误的mime类型。 而且我们也知道通过C#中的文件签名获取mime类型的方式(使用urlmon.dll Using .NET, how can you find the mime type of a file based on the file signature not the extension,我的问题是我们怎样才能在IOS中获得精确的mime类型,无论文件的扩展名如何由某人改变,我们可以获得正确的哑剧类型。

谢谢你的关注〜!

1 个答案:

答案 0 :(得分:27)

  

你能告诉我,当我得到一个时,我是如何得到正确的mime类型的   文件的路径。

iOS使用Uniform Type Identifiers(UTI)的概念来处理文档类型。

NSString *path; // contains the file path

// Get the UTI from the file's extension:

CFStringRef pathExtension = (__bridge_retained CFStringRef)[path pathExtension];
CFStringRef type = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension, NULL);
CFRelease(pathExtension);

// The UTI can be converted to a mime type:

NSString *mimeType = (__bridge_transfer NSString *)UTTypeCopyPreferredTagWithClass(type, kUTTagClassMIMEType);
if (type != NULL)
    CFRelease(type);

您应该考虑直接使用UTI而不是将它们转换为功能较弱的mime类型。