ios - 如何使用 PHAsset 在 iOS 8 中获取图像或视频的 MIME 类型?

标签 ios ios8 mime-types phasset

我在我的应用程序中使用 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

需要指出的几点/改进方法:

  1. 如果无法导出 mimeType,我选择默认为 image/jpeg。
  2. 假设第一个资源是合适的。对于多资源 Assets (实时照片等),情况可能并非如此。
  3. 我尚未测试它对于 iCloud 中需要下载的资源如何/是否按预期工作。

如果有人对#2 或#3 有见解,我们将不胜感激。当我了解更多信息时,我会更新我的答案。

关于ios - 如何使用 PHAsset 在 iOS 8 中获取图像或视频的 MIME 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28724615/

相关文章:

iphone - 如何找到两次之间的差异?

ios - 如果我有 iPad 的设备 ID,我可以构建并发送此应用程序供他人远程安装吗?

ios - 最后一个 UITableViewCell 上的分隔符没有添加?

iphone - Swift 隐藏后无法显示后退按钮

ios - 观察位置服务更新

csv - 用于text/csv mimetype的可选 header 参数的正确语法?

ios - 无法识别的选择器发送到实例

iphone - 对于iOS healthkit如何保存收缩压和舒张压值?

mime-types - 为什么 MIME 类型的应用程序/八位字节流不称为字节流?

python - 如何使用 Flask 提供静态 SVG 文件?