【问题标题】:Determine MIME Type of NSData Loaded From a File确定从文件加载的 NSData 的 MIME 类型
【发布时间】:2011-08-25 04:54:33
【问题描述】:

由于各种原因,我使用 NSURLProtocol 拦截 http 请求并从我的应用程序文档目录中的文件加载内容。该过程的一部分涉及加载 NSData 对象,该对象可以是从 html 文件到 jpeg 图像的任何内容。 NSURLProtocol 需要设置 mimetype。

iPhone-SDK 中是否有用于确定文件或 NSData 内容的 mimetype 的 API?

【问题讨论】:

标签: iphone objective-c mime-types nsdata


【解决方案1】:

也许您可以下载文件并使用this 获取文件的 MIME 类型。

+ (NSString*) mimeTypeForFileAtPath: (NSString *) path {
    if (![[NSFileManager defaultManager] fileExistsAtPath:path]) {
        return nil;
    }
    // Borrowed from https://stackoverflow.com/questions/5996797/determine-mime-type-of-nsdata-loaded-from-a-file
    // itself, derived from  https://stackoverflow.com/questions/2439020/wheres-the-iphone-mime-type-database
    CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (CFStringRef)[path pathExtension], NULL);
    CFStringRef mimeType = UTTypeCopyPreferredTagWithClass (UTI, kUTTagClassMIMEType);
    CFRelease(UTI);
    if (!mimeType) {
        return @"application/octet-stream";
    }
    return [NSMakeCollectable((NSString *)mimeType) autorelease];
}

【讨论】:

    【解决方案2】:

    你能在 HTTP 接受标头中看不到任何内容吗?如果你正在拦截请求,我希望在大多数情况下将接受标头设置为预期类型的​​ mime

    【讨论】:

    • 我已经考虑过了,但如果可能的话,我宁愿从文件中获取它而不是反刍数据。
    猜你喜欢
    • 2014-03-14
    • 2013-04-21
    • 2016-05-23
    • 2013-02-20
    • 2010-11-07
    • 2021-04-13
    • 1970-01-01
    • 2012-07-26
    • 2012-02-02
    相关资源
    最近更新 更多