2015-10-18 31 views
-1

我面對建設有下載功能的網頁瀏覽器有問題,這是我的代碼:Objective-C中得到MIME類型是

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSURL *url = request.URL; 
    NSURLRequest *req = [NSURLRequest requestWithURL:url]; 
    NSURLConnection *conn = [NSURLConnection connectionWithRequest:req delegate:self]; 
    [conn start]; 
    return YES; 
} 

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
    if ([[response MIMEType] rangeOfString:@"video"].location != NSNotFound) { 
     // Do something with that video 
    } 
} 

這是目前正在按預期運行,視頻文件將被正確處理,但webview也會加載它,我需要做的是在shouldStartLoadWithRequest返回YES之前捕獲文件的MIME類型,如果是視頻,則返回NO。

我試過sendSynchronousRequest方法,但它減緩了應用程序,我也試過:

#import <MobileCoreServices/MobileCoreServices.h>  
NSString *fileExtension = [myFileURL pathExtension]; 
NSString *UTI = (__bridge_transfer NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)fileExtension, NULL); 
NSString *contentType = (__bridge_transfer NSString *)UTTypeCopyPreferredTagWithClass((__bridge CFStringRef)UTI, kUTTagClassMIMEType); 

但我經常拿錯myme類型,過去的事情,我不想通過文件的擴展名,因爲URL可以檢測類型被格式化爲別名。

謝謝你的幫助。

回答

1

NSURLConnection死了,所以停止使用它。切換到NSURLSession。 NSURLSession爲您提供了一個數據任務委託方法,可以讓您檢查響應頭並退出。

+0

但我不以任何方式認可你正在嘗試做什麼;對我來說似乎很難。 – matt

+0

完全同意這一點 – TheCodingArt