• ios网络学习------4 UIWebView的加载本地数据的三种方式


    UIWebView是IOS内置的浏览器,可以浏览网页,打开文档  html/htm  pdf   docx  txt等格式的文件。  safari浏览器就是通过UIWebView做的。

    服务器将MIME的标识符等放入传送的数据中告诉浏览器使用那种插件读取相关文件。

    uiwebview加载各种本地文件(通过loadData方法):

    [objc] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. - (void)viewDidLoad  
    2. {  
    3.     [super viewDidLoad];  
    4.     [self setupUI];  
    5.       
    6.     NSString *path = [[NSBundle mainBundle] pathForResource:@"关于.docx" ofType:nil];  
    7.     NSURL *url = [NSURL fileURLWithPath:path];  
    8.     NSLog(@"%@", [self mimeType:url]);  
    9.       
    10.       
    11.     //webview加载本地文件,可以使用加载数据的方式  
    12.     //第一个诶参数是一个NSData, 本地文件对应的数据  
    13.     //第二个参数是MIMEType  
    14.     //第三个参数是编码格式  
    15.     //相对地址,一般加载本地文件不使用,可以在指定的baseURL中查找相关文件。  
    16.       
    17.     //以二进制数据的形式加载沙箱中的文件,  
    18.     NSData *data = [NSData dataWithContentsOfFile:path];  
    19.       
    20.     [self.webView loadData:data MIMEType:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document" textEncodingName:@"UTF-8" baseURL:nil];  
    21. }  
    22.   
    23. #pragma mark 加载docx文件  
    24. - (void)loadDOCX  
    25. {  
    26.       
    27.     NSString *path = [[NSBundle mainBundle] pathForResource:@"关于.docx" ofType:nil];  
    28.     NSURL *url = [NSURL fileURLWithPath:path];  
    29.     NSLog(@"%@", [self mimeType:url]);  
    30.   
    31.     NSData *data = [NSData dataWithContentsOfFile:path];  
    32.       
    33.     [self.webView loadData:data MIMEType:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document" textEncodingName:@"UTF-8" baseURL:nil];}  
    34.   
    35. #pragma mark 加载pdf文件  
    36. - (void)loadPDF  
    37. {  
    38.     NSString *path = [[NSBundle mainBundle] pathForResource:@"iOS6Cookbook.pdf" ofType:nil];  
    39.     NSURL *url = [NSURL fileURLWithPath:path];  
    40.     NSLog(@"%@", [self mimeType:url]);  
    41.       
    42.     NSData *data = [NSData dataWithContentsOfFile:path];  
    43.       
    44.     [self.webView loadData:data MIMEType:@"application/pdf" textEncodingName:@"UTF-8" baseURL:nil];  
    45. }  
    46.   
    47. #pragma mark 加载本地文本文件  
    48. - (void)loadText  
    49. {  
    50.     NSString *path = [[NSBundle mainBundle] pathForResource:@"关于.txt" ofType:nil];  
    51.     NSURL *url = [NSURL fileURLWithPath:path];  
    52.     NSLog(@"%@", [self mimeType:url]);  
    53.   
    54.     NSData *data = [NSData dataWithContentsOfFile:path];  
    55.       
    56.     [self.webView loadData:data MIMEType:@"text/plain" textEncodingName:@"UTF-8" baseURL:nil];  
    57. }  
    58.   
    59.   
    60. #pragma mark 加载本地html文件  
    61. - (void)loadHTML  
    62. {  
    63.     NSString *path = [[NSBundle mainBundle] pathForResource:@"demo.html" ofType:nil];  
    64.     NSURL *url = [NSURL fileURLWithPath:path];  
    65.     NSLog(@"%@", [self mimeType:url]);  
    66.       
    67.     NSData *data = [NSData dataWithContentsOfFile:path];  
    68.       
    69.     [self.webView loadData:data MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:nil];  
    70. }  
    71.   
    72.   
    73. #pragma mark 获取指定URL的MIMEType类型  
    74. - (NSString *)mimeType:(NSURL *)url  
    75. {  
    76.     //1NSURLRequest  
    77.     NSURLRequest *request = [NSURLRequest requestWithURL:url];  
    78.     //2NSURLConnection  
    79.       
    80.     //3 在NSURLResponse里,服务器告诉浏览器用什么方式打开文件。  
    81.       
    82.     //使用同步方法后去MIMEType  
    83.     NSURLResponse *response = nil;  
    84.     [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];  
    85.     return response.MIMEType;  
    86. }  



    uiwebview加载各种本地文件(通过loadRequest方法):

    [objc] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. - (void)viewDidLoad  
    2. {  
    3.     [super viewDidLoad];  
    4.     [self setupUI];  
    5.       
    6.       
    7.     //加载路径的第一个方式  
    8. //    NSString *path = [[NSBundle mainBundle] pathForResource:@"关于.docx" ofType:nil];  
    9. //    NSURL *url = [NSURL fileURLWithPath:path];  
    10.     //加载路径的第二个方式  
    11.     NSURL *url = [[NSBundle mainBundle] URLForResource:@"iOS6Cookbook.pdf" withExtension:nil];  
    12.       
    13.     //uiwebview加载文件的第二个方式。第一个方式在下面的注释中。  
    14.     NSURLRequest *request = [NSURLRequest requestWithURL:url];  
    15.     [self.webView loadRequest:request];  
    16.       
    17.     //NSLog(@"%@", [self mimeType:url]);  
    18.     //webview加载本地文件,可以使用加载数据的方式  
    19.     //第一个诶参数是一个NSData, 本地文件对应的数据  
    20.     //第二个参数是MIMEType  
    21.     //第三个参数是编码格式  
    22.     //相对地址,一般加载本地文件不使用,可以在指定的baseURL中查找相关文件。  
    23.       
    24.     //以二进制数据的形式加载沙箱中的文件,  
    25. //    NSData *data = [NSData dataWithContentsOfFile:path];  
    26. //      
    27. //    [self.webView loadData:data MIMEType:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document" textEncodingName:@"UTF-8" baseURL:nil];  
    28. }  



    UIWebView加载内容的三种方式:

    1 加载本地数据文件

           指定文件的MIMEType

    编码格式使用@“UTF-8”      

    2加载html字符串(可以加载全部或者部分html文件)

    3加载NSURLRequest文件(前两步与NSURLConnect相同)

  • 相关阅读:
    leetcode 122. Best Time to Buy and Sell Stock II
    leetcode 121. Best Time to Buy and Sell Stock
    python 集合(set)和字典(dictionary)的用法解析
    leetcode 53. Maximum Subarray
    leetcode 202. Happy Number
    leetcode 136.Single Number
    leetcode 703. Kth Largest Element in a Stream & c++ priority_queue & minHeap/maxHeap
    [leetcode]1379. Find a Corresponding Node of a Binary Tree in a Clone of That Tree
    正则表达式
    十种排序算法
  • 原文地址:https://www.cnblogs.com/qyfeng009/p/5268502.html
Copyright © 2020-2023  润新知