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

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

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

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

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self setupUI];

    NSString *path = [[NSBundle mainBundle] pathForResource:@"关于.docx" ofType:nil];
    NSURL *url = [NSURL fileURLWithPath:path];
    NSLog(@"%@", [self mimeType:url]);

    //webview加载本地文件,可以使用加载数据的方式
    //第一个诶参数是一个NSData, 本地文件对应的数据
    //第二个参数是MIMEType
    //第三个参数是编码格式
    //相对地址,一般加载本地文件不使用,可以在指定的baseURL中查找相关文件。

    //以二进制数据的形式加载沙箱中的文件,
    NSData *data = [NSData dataWithContentsOfFile:path];

    [self.webView loadData:data MIMEType:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document" textEncodingName:@"UTF-8" baseURL:nil];
}

#pragma mark 加载docx文件
- (void)loadDOCX
{

    NSString *path = [[NSBundle mainBundle] pathForResource:@"关于.docx" ofType:nil];
    NSURL *url = [NSURL fileURLWithPath:path];
    NSLog(@"%@", [self mimeType:url]);

    NSData *data = [NSData dataWithContentsOfFile:path];

    [self.webView loadData:data MIMEType:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document" textEncodingName:@"UTF-8" baseURL:nil];}

#pragma mark 加载pdf文件
- (void)loadPDF
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"iOS6Cookbook.pdf" ofType:nil];
    NSURL *url = [NSURL fileURLWithPath:path];
    NSLog(@"%@", [self mimeType:url]);

    NSData *data = [NSData dataWithContentsOfFile:path];

    [self.webView loadData:data MIMEType:@"application/pdf" textEncodingName:@"UTF-8" baseURL:nil];
}

#pragma mark 加载本地文本文件
- (void)loadText
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"关于.txt" ofType:nil];
    NSURL *url = [NSURL fileURLWithPath:path];
    NSLog(@"%@", [self mimeType:url]);

    NSData *data = [NSData dataWithContentsOfFile:path];

    [self.webView loadData:data MIMEType:@"text/plain" textEncodingName:@"UTF-8" baseURL:nil];
}

#pragma mark 加载本地html文件
- (void)loadHTML
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"demo.html" ofType:nil];
    NSURL *url = [NSURL fileURLWithPath:path];
    NSLog(@"%@", [self mimeType:url]);

    NSData *data = [NSData dataWithContentsOfFile:path];

    [self.webView loadData:data MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:nil];
}

#pragma mark 获取指定URL的MIMEType类型
- (NSString *)mimeType:(NSURL *)url
{
    //1NSURLRequest
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    //2NSURLConnection

    //3 在NSURLResponse里,服务器告诉浏览器用什么方式打开文件。

    //使用同步方法后去MIMEType
    NSURLResponse *response = nil;
    [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
    return response.MIMEType;
}

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

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self setupUI];

    //加载路径的第一个方式
//    NSString *path = [[NSBundle mainBundle] pathForResource:@"关于.docx" ofType:nil];
//    NSURL *url = [NSURL fileURLWithPath:path];
    //加载路径的第二个方式
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"iOS6Cookbook.pdf" withExtension:nil];

    //uiwebview加载文件的第二个方式。第一个方式在下面的注释中。
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [self.webView loadRequest:request];

    //NSLog(@"%@", [self mimeType:url]);
    //webview加载本地文件,可以使用加载数据的方式
    //第一个诶参数是一个NSData, 本地文件对应的数据
    //第二个参数是MIMEType
    //第三个参数是编码格式
    //相对地址,一般加载本地文件不使用,可以在指定的baseURL中查找相关文件。

    //以二进制数据的形式加载沙箱中的文件,
//    NSData *data = [NSData dataWithContentsOfFile:path];
//
//    [self.webView loadData:data MIMEType:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document" textEncodingName:@"UTF-8" baseURL:nil];
}

UIWebView加载内容的三种方式:

1 加载本地数据文件

指定文件的MIMEType

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

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

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

ios网络学习------4 UIWebView的加载本地数据的三种方式,布布扣,bubuko.com

时间: 2024-12-26 01:53:21

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

UIWebView的加载本地数据的三种方式

UIWebView是iOS内置的浏览器,可以浏览网页,打开文档  html/htm  pdf   docx  txt等格式的文件.  safari浏览器就是通过UIWebView做的. 服务器将MIME的标识符等放入传送的数据中告诉浏览器使用那种插件读取相关文件. uiwebview加载各种本地文件(通过loadData方法): - (void)viewDidLoad{    [super viewDidLoad];    [self setupUI];        NSString *pat

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

Velocity中加载vm文件的三种方式: a.  加载classpath目录下的vm文件 Properties p = new Properties(); // 加载classpath目录下的vm文件 // 这里是加载模板VM文件,比如:/META-INF/template/Web_B2CPayment.vm(请参考mas_spring_integration.xml) p.setProperty("file.resource.loader.class", "org.apa

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

Velocity中加载vm文件的三种方式 velocitypropertiespath Velocity中加载vm文件的三种方式:   方式一:加载classpath目录下的vm文件 Properties p = new Properties(); p.put("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); Ve

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

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

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

UIImage加载图片方式一般有两种: (1)imagedNamed初始化:默认加载图片成功后会内存中缓存图片,这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象.如果缓存中没有找到相应的图片对象,则从指定地方加载图片然后缓存对象,并返回这个图片对象. (2)imageWithContentsOfFile初始化:则仅只加载图片,不缓存. 大量使用imageNamed方式会在不需要缓存的地方额外增加开销CPU的时间来做这件事.当应用程序需要加载一张比较大的图片并且使用一次性,那么其实是没有

Spring加载Properties配置文件的三种方式

一.通过 context:property-placeholder 标签实现配置文件加载 1) 用法: 1.在spring.xml配置文件中添加标签 <context:property-placeholder ignore-unresolvable="true" location="classpath:redis-key.properties"/> 2.在 spring.xml 中使用 配置文件属性:$ <!-- 基本属性 url.user.pas

javaweb中加载外部文件的三种方式

1.request.getSession().getServletContext().getResourceAsStream("/WEB-INF/classes/a.txt""); / 相对对于项目的根路径 2.getClass().getClassLoader().getResourceAsStream("/a.txt") / 不管有没有'/' 都相对于classpath路径(/WEB-INF/classes/) 3.getClass().getReso

VC6.0加载lib文件的三种方法

MFC编写程序,都要用到动态链接库,MFC相关的动态库有MFCD42和MFC42等,MFC框架程序已经自动加载,那么如何引入第三方的动态链接库到工程中呢? 静态链接库是要先把程序中所需要使用的函数编译成机器码,保存在*.lib文件中.编译器会去*.lib中找出所需要的函数,并把这些函数的机器码复制一份,放在可执行文件中.将lib库引入工程,有下面3种方法. 第一种方法,lib文件直接加入到工程文件列表中. 在VC中打开“File View”一页,选中工程名,单击鼠标右键,然后在弹出的快捷菜单中选

Jquery 在页面加载后执行的几种方式

这篇文章主要介绍了Jquery 在页面加载后执行的几种方式,需要的朋友可以参考下 方式1: $(function(){ initPublish(); }); 说明: initPublish() 即为你要运行的JS函数:这段代码,放在页面最低端. 方式2: $(document).ready(function () { // add your code here initPublish(); $(.a).click( function (){ // add your code here }); }