• 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相同)

  • 相关阅读:
    day56 js收尾,jQuery前戏
    解决:No module named 'haystack.urls'
    用PicGo+Gitee(码云)搭建Markdown图床
    Python正课138 —— 基础扩展4 django
    Python正课140 —— DRF 进阶1 序列化、增删改查
    Markdown基本语法
    Python正课139 —— DRF 入门1
    用PicGo+GitHub+Typora搭建个人图床
    解决django.core.exceptions.ImproperlyConfiguredmysqlclient 1.3.13 or
    解决:Django中AttributeError:'str'objects has no attribute 'decode'
  • 原文地址:https://www.cnblogs.com/qyfeng009/p/5268502.html
Copyright © 2020-2023  润新知