zoukankan      html  css  js  c++  java
  • iOS --- 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;
    }

     

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

  • 相关阅读:
    mysql进阶语句优化---day40
    pymysql基本语法,sql注入攻击,python操作pymysql,数据库导入导出及恢复数据---day38
    单表查询,多表查询,子查询---day37
    mysql-数据类型,类型约束,联合唯一约束,表与表之间的关系,存储引擎---day36
    mysql安装及增删改查操作---day35
    死锁,互斥锁,递归锁,线程事件Event,线程队列Queue,进程池和线程池,回调函数,协程的使用,协程的例子---day33
    进程之间共享数据Manager,线程相关使用Thread,用类定义线程,守护线程setDaemon,线程锁Lock,线程信号量Semaphore---day32
    Docker部署go-fastdfs
    Docker部署gitlab
    Docker部署hasura
  • 原文地址:https://www.cnblogs.com/KiVen2015/p/5900608.html
Copyright © 2011-2022 走看看