我在我的应用程序中使用 PHAsset,我需要将图像和视频上传到 api,为此我需要 mime 类型的图像和视频。在以前版本的 iOS 中,我使用以下代码,但在 iOS 8 中,我不知道如何获取 mimetype,我尝试查看苹果 PHAsset 编程指南,但找不到它。
ALAssetRepresentation *representation = [asset defaultRepresentation];
NSString *mimeType = (__bridge_transfer NSString *)UTTypeCopyPreferredTagWithClass
((__bridge CFStringRef)[representation UTI], kUTTagClassMIMEType);
寻求任何指导。
最佳答案
我最终获得了 PHAsset 的 MIME 类型,如下所示(iOS 9+):
@implementation PHAsset (UTI)
- (NSString *)utiMimeType
{
NSString *mimeType = @"image/jpeg";
NSString *uType = [PHAssetResource assetResourcesForAsset:self].firstObject.uniformTypeIdentifier;
if (uType) {
NSString *tagMimeType = (__bridge NSString *)UTTypeCopyPreferredTagWithClass((__bridge CFStringRef)uType, kUTTagClassMIMEType);
if (tagMimeType)
mimeType = tagMimeType;
}
return mimeType;
}
@end
需要指出的几点/改进方法:
- 如果无法导出 mimeType,我选择默认为 image/jpeg。
- 假设第一个资源是合适的。对于多资源 Assets (实时照片等),情况可能并非如此。
- 我尚未测试它对于 iCloud 中需要下载的资源如何/是否按预期工作。
如果有人对#2 或#3 有见解,我们将不胜感激。当我了解更多信息时,我会更新我的答案。
关于ios - 如何使用 PHAsset 在 iOS 8 中获取图像或视频的 MIME 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28724615/