从 NSURL 检测文件类型

Detect file type from NSURL

我有包含不同网站的 NSURL 变量 links.I 想要检测包含此文件的类型 link(如果它包含任何文件)。 在示例中,这是 pdf 文件:https://vk.com/doc-105831417_445462965 我如何在代码中检测到这是 PDF 文件或其他类型的文件(例如 ZIP、doc)? 我有这段代码,但它只适用于硬件上的文件:

CFStringRef fileExtension = (__bridge CFStringRef) [filePath pathExtension];
CFStringRef fileUTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension, NULL);


if([self ifZip:filePath]){

    return ACFileTypeZIP;

}

if (UTTypeConformsTo(fileUTI, kUTTypeMovie)){

    return ACFileTypeZIP;

}else if (UTTypeConformsTo(fileUTI, kUTTypePDF)){

    return ACFileTypeDocument;

}else if (UTTypeConformsTo(fileUTI, kUTTypeImage)){

    return ACFileTypeImage;

}else if (UTTypeConformsTo(fileUTI, kUTTypeAudio)){

    return ACFileTypeAudio;

}

CFRelease(fileUTI);

注意 ACFileType 是我的枚举 types.ifZip 是我检测 zip 文件的方法:

-(BOOL)ifZip:(NSString*)path{


NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:path];
NSData *data = [fh readDataOfLength:4];
if ([data length] == 4) {
    const char *bytes = [data bytes];
    if (bytes[0] == 'P' && bytes[1] == 'K' && bytes[2] == 3 && bytes[3] == 4) {
        return YES;
    }
}

return NO;}

我认为它应该有效:

NSString *extension = [url pathExtension];