Подтвердить что ты не робот

Определение типа MIME NSData, загруженного из файла

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

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

4b9b3361

Ответ 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  /questions/212971/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

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

Ответ 3

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