分类: IOS2014-06-27 12:56 959人阅读 评论(0) 收藏 举报

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

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

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

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

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

  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. //加载路径的第二个方式
  9. NSURL *url = [[NSBundle mainBundle] URLForResource:@"iOS6Cookbook.pdf" withExtension:nil];
  10. //uiwebview加载文件的第二个方式。第一个方式在下面的注释中。
  11. NSURLRequest *request = [NSURLRequest requestWithURL:url];
  12. [self.webView loadRequest:request];
  13. //NSLog(@"%@", [self mimeType:url]);
  14. //webview加载本地文件,可以使用加载数据的方式
  15. //第一个诶参数是一个NSData, 本地文件对应的数据
  16. //第二个参数是MIMEType
  17. //第三个参数是编码格式
  18. //相对地址,一般加载本地文件不使用,可以在指定的baseURL中查找相关文件。
  19. //以二进制数据的形式加载沙箱中的文件,
  20. //    NSData *data = [NSData dataWithContentsOfFile:path];
  21. //
  22. //    [self.webView loadData:data MIMEType:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document" textEncodingName:@"UTF-8" baseURL:nil];
  23. }

UIWebView加载内容的三种方式:

1 加载本地数据文件

指定文件的MIMEType

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

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

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

ios网络学习------4 UIWebView的加载本地数据的三种方式的更多相关文章

  1. iOS --- UIWebView的加载本地数据的三种方式

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

  2. Hadoop生态圈-注册并加载协处理器(coprocessor)的三种方式

    Hadoop生态圈-注册并加载协处理器(coprocessor)的三种方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 到目前为止,大家已经掌握了如何使用过滤器来减少服务器端通过 ...

  3. 转 Velocity中加载vm文件的三种方式

    Velocity中加载vm文件的三种方式   velocitypropertiespath Velocity中加载vm文件的三种方式:    方式一:加载classpath目录下的vm文件 Prope ...

  4. Velocity中加载vm文件的三种方式

    Velocity中加载vm文件的三种方式: a.  加载classpath目录下的vm文件 /** * 初始化Velocity引擎 * --VelocityEngine是单例模式,线程安全 * @th ...

  5. Swift - 网页控件(UIWebView)加载本地数据,文件

    使用UIWebView加载本地数据或资源有如下三种方式: 1,使用loadHTMLString方法加载HTML内容 2,使用loadRequest方法加载本地资源(也可用于加载服务器资源) 3,先将内 ...

  6. 加载gif动画的三种方式

    GifView.h/** * 调用结束就开始播放动画,如果需要用户指定何时播放的话,只需要把timer的开始放到合适的位置.通过对CFDictonaryRaf 也就是gifProperties的改变, ...

  7. ExtJS4加载FormPanel数据的几种方式

    我们做web应用最多的就是处理表单,extjs为我们提供了很多处理表单的功能,很多初学者疑惑怎么加载表单数据,到底能用什么方式加载?本文中,我将我自己实验过的进行一下总结,自己备忘,也希望能帮助到其他 ...

  8. UIImage加载本地图片的两种方式

    UIImage加载图片方式一般有两种: (1)imagedNamed初始化:默认加载图片成功后会内存中缓存图片,这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象.如果缓存中没有找到相应的图片 ...

  9. Unity加载本地图片的2种方式

    1. 使用 WWW 加载,详细查看 unity3d 官方文档. 2. 使用 System.IO 加载,lua 代码如下: local File = luanet.import_type("S ...

随机推荐

  1. asp.net服务控件的生命周期

    1. 初始化 - Init事件 (OnInit 方法)   2. 加载视图状态 - LoadViewState方法   3. 处理回发数据 - LoadPostData方法           对实现 ...

  2. 使用Netty收发二进制报文问题记

    1.java二进制编解码 byteBuffer.flip() byteBuffer.getInt() 与 byteBuf.getInt(11) 2.粘包拆包问题 LengthFieldBasedFra ...

  3. [问题2015S11] 复旦高等代数 II(14级)每周一题(第十二教学周)

    [问题2015S11]  证明: 任一复方阵都相似于一个复对称阵. 举例说明: 存在实方阵, 它不相似于实对称阵. 问题解答请在以下网址下载:http://pan.baidu.com/share/ho ...

  4. [问题2014S13] 复旦高等代数II(13级)每周一题(第十三教学周)

    [问题2014S13]  (1)  设 \(A\) 是数域 \(\mathbb{K}\) 上的 \(n\) 阶非异阵, 若存在主对角元全为 \(1\) 的下三角阵 \(L\in M_n(\mathbb ...

  5. IE/Firefox/Chrome等浏览器保存Cookie的位置

    IE/Firefox/Chrome等浏览器保存Cookie的位置 原文  http://smilejay.com/2013/04/browser-cookie-location/   前面写了篇长文( ...

  6. php的rss订阅

    一般来说我们很少自己造轮子,读取rss还是用git上的开源库吧 https://github.com/dg/rss-php 这个开源库不能读取博客园的rss订阅,新浪微博的格式显示有问题. 博客园的订 ...

  7. Linux nginx日志按天分割实例

    Linux nginx日志按天分割实例   nginx的日志有个小缺点,日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将导致日志文件非常大,不便于管理这就需要我们自己来实现了,按日期每 ...

  8. Android 控件知识点,

    一.Android控件具有visibility属性,可以取三个值:visible(默认值)可见,invisible(不可见,但仍然占据原有的位置和大小,可以看做是变得透明了),gone(空间不仅不可见 ...

  9. IntelliJ IDEA 修改包名

    1.首先将AndroidManifest的Package Name重命名(快捷键shift+F6或者右键Refctor然后Rename)这时Package Name就改变了,但是Src的文件名还没变2 ...

  10. 0060 Linux SELinux 管理命令

    1. SELinux 的起源 SELinux 是一个面向政府和行业的产品,由 NSA.Network Associates.Tresys 以及其他组织设计和开发.尽管 NSA 将其作为一个补丁集引入, ...