Objective C 根据文件的扩展名获取 MIME Type

Objective C 2020-02-14 阅读 287 评论 0

使用 http post上传文件,需要将文件资源类型传给服务器,这样服务器就可以判断文件是图片还是音视频等。下面介绍在 iOS 项目下,使用了 Objective C,根据文件名称的扩展类型,获取文件的 MIME Type(Content Type)。

示例

此方法需要用到MobileCoreServices.framework,需将框架加入到Build Phases -> Link Binary With Libraries,并在代码的头文件引入。

#import <MobileCoreServices/MobileCoreServices.h>

/**
 获取文件的 mime type
 */
- (NSString *)getMimeType:(NSString *)fileExtension{
  NSString *UTI = (__bridge_transfer NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)fileExtension, NULL);
  NSString *mimeType = (__bridge_transfer NSString *)UTTypeCopyPreferredTagWithClass((__bridge CFStringRef)UTI, kUTTagClassMIMEType);
  return mimeType;
}

使用

NSString *path = @"/home/test.png";
NSString *fileExtension = [path pathExtension];
NSString *contentType = [self getMimeType:fileExtension];
NSLog(@"%@", contentType);
// 输出  image/png

注意

使用此方法获取到的不是文件真正的 MIME-Type,比如一张图片是 png,MIME Type 是image/png,如果这张图片的扩展名改成了 jpg,将获取到image/jpeg

最后更新 2020-02-14