Определите MIME-тип NSData, загруженного из файла - PullRequest
17 голосов
/ 13 мая 2011

По разным причинам я перехватываю запросы http и загружаю контент из файлов в каталоге документов моего приложения, используя NSURLProtocol. Часть процесса включает в себя загрузку объекта NSData, который может быть любым из файла html в изображение jpeg. NSURLProtocol требует установки mimetype.

Есть ли в iPhone-SDK API для определения типа mime-файла или содержимого NSData?

Ответы [ 3 ]

32 голосов
/ 14 мая 2011

Возможно, вы могли бы загрузить файл и использовать this , чтобы получить MIME-тип файла.

+ (NSString*) mimeTypeForFileAtPath: (NSString *) path {
    if (![[NSFileManager defaultManager] fileExistsAtPath:path]) {
        return nil;
    }
    // Borrowed from /8279660/opredelite-mime-tip-nsdata-zagruzhennogo-iz-faila
    // 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];
}
4 голосов
/ 13 мая 2011

Я не знаком с таким API в SDK. Однако, если нет способа сохранить MIME-тип, вы можете использовать MagicKit .

0 голосов
/ 14 мая 2011

если вы не видите ничего в заголовках принятия HTTP, если вы перехватываете запросы, я ожидаю, что в большинстве случаев заголовок принятия будет установлен равным mime ожидаемого типа

...