在我当前的应用程序中,我从服务器下载了一些文件,并将它们存储在本地。
基于文件的扩展名,我在适当的视图中加载文件。
例子:
- 文件扩展名:mov、3gp、m4a 等,=> 显示在媒体播放器中。
- 文件扩展名:rtf、pptx、数字等,=>在UIWebView中显示。
- 文件扩展名:gif、png、xbm 等,=>在 UIImageView 中显示。
问题是:一些下载的文件可能没有任何扩展名。
我发现的一种方法是在 connectionDidFinishLoading 中从响应中获取 MIMEType 并从该文件扩展名中获取。我使用下面的代码,同样的:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
CFStringRef mimeType = (__bridge CFStringRef)[_respo MIMEType];
CFStringRef uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, mimeType, NULL);
CFStringRef extension = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassFilenameExtension);
NSString *fileName = [NSString stringWithFormat:@"%@.%@", [[_respo suggestedFilename] stringByDeletingPathExtension], (__bridge NSString *)extension];
[[NSFileManager defaultManager] createFileAtPath:[[self docsDir] stringByAppendingPathComponent:[NSString stringWithFormat:@"Downloads/%@", fileName]] contents:_downloadedData attributes:nil];
}
现在我的问题是:
有没有其他方法可以识别没有扩展名的文件的文件扩展名,比如来自 NSData 对象?
除了检查文件扩展名,还有其他方法可以在适当的视图中显示文件吗?
请建议。