iOS WebView 加载本地资源(图片,文件等)

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];  
NSString *html;

    NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];

    NSString *htmlFilePath=[cachePath stringByAppendingPathComponent:@"123.html"];
    //    NSString *html=[[NSString alloc]initWithContentsOfFile:htmlFilePath encoding:NSUTF8StringEncoding error:nil];
    NSURL *baseURL= [NSURL fileURLWithPath:htmlFilePath];
    if ([[NSFileManager defaultManager] fileExistsAtPath:htmlFilePath]) {
        NSString *string = [NSString stringWithContentsOfFile:htmlFilePath
                                                     encoding:NSUTF8StringEncoding
                                                        error:nil];

        if (string) {
            html = string;
        }
    }
//    NSString *path = [[NSBundle mainBundle] bundlePath];
//    NSURL *baseURL2 = [NSURL fileURLWithPath:path];
    [self.webView loadHTMLString:html baseURL:baseURL];

至于在沙盒里面的图片,想加载到web里面,发现在模拟器里面是正常,然后再真机上加载不出来

参考这篇文章 iOS Native加载H5中的图片 github  源码:https://github.com/CoderJackyHuang/iOSLoadWebViewImage

多次尝试,无果,找资料时发现下面的方法可以加载沙盒中图片

NSData *imageData=[NSData dataWithContentsOfFile:imagePath];//imagePath :沙盒图片路径
NSString *imageSource = [NSString stringWithFormat:@"data:image/jpg;base64,%@",[imageData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]];
NSString *strJs=[NSString stringWithFormat:@"document.images[0].src=‘%@‘",imageSource];
[webView evaluateJavaScript:strJs completionHandler:^(id _Nullable response, NSError * _Nullable error) {
   NSLog(@"webView response: %@ error: %@", response, error);

}];
时间: 2024-10-11 21:42:44

iOS WebView 加载本地资源(图片,文件等)的相关文章

WebView加载本地Html文件并实现点击效果

Webview是用来与前端交互的纽,可以加载本地Html文件,和网页并实现交互的功能. WebView通过WebSetting可以使用Android原生的JavascriptInterface来进行js和java的通信. 加载本地文件:webView.loadUrl("file:///android_asset/xxx.html"); 加载网页:webView.loadUrl("http://baidu.com"); 案例:(WebView加载本地Html并实现与J

安卓 WebView加载本地图片时居中显示

在一个项目中使用WebView显示gif图片(自定义的View无法放大gif),当图片过小时只在左侧显示,经过研究发现无论设置android:layout_gravity="center_horizontal"还是设置android:gravity="center_horizontal" 都无法居中显示,而且还设置了android:layout_width="wrap_content",但是实际上WebView并没有自适应内容,它的宽度占了屏幕宽

转载:Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式

Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式 出自:http://www.cnblogs.com/top5/archive/2012/08/04/2623464.html 关于AS3加载图片等外部资源,我常用的有两种方式:Loader和Embed,各自的特点,总结如下: Embed:在Flash编译阶段就将资源嵌入,也就是说图片资源是会被编译进swf文件里面去的:这样子的好处是代码比较简洁,使用方便,也不存在加载顺序的问题,缺点是会增大swf文件的体积 Loader:在

【Android开发经验】使用WebView加载本地图片出现闪屏的解决方法

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 问题描述 运行环境 解决方案 问题描述 使用WebView加载本地图片的时候,也就是一段HTML代码嵌入本地的图片地址的形式,会出现短暂的灰色的闪烁,然后就可以正常显示图片了,WebView的背景颜色在xml中设置为黑色. 同时,出现这个问题的时候,Log会打印报错信息:nativeOnDraw failed; clearing to background color. 运行环境 nexus5 Andro

java如何加载本地的dll文件

首先,应当明确,dll有两类:(1)Java所依赖的dll和,(2)dll所依赖的dll.正是由于第(2)种dll的存在,才导致了java中加载dll的复杂性大大增加,许多说法都是这样的,但我实验的结果却表明似乎没有那么复杂,后面会予以详细阐述. 其次,Java中加载dll的方式也有两种:(1)通过调用System.loadLibrary(String filename)和,(2)通过调用System.load(String filename)方法.其底层都是通过使用ClassLoader中的l

Android WebView加载本地html并实现Java与JS交互

最近做的一个项目中,用到自定义地图,将自定义地图转换成html页面,现在需要做的是如何将本地的html加载到android中,并可以实现交互. 相关讲解: 其实webview加载资源的速度并不慢,但是如果资源多了,当然就很慢.图片.css .js .html这些资源每个大概需要10-200ms ,一般都是30ms就ok了.不过webview是必须等到全部资源都完成加载,才会进行渲染的,所以加载的速度很重要!从Google上我们了解到,webview加载页面的顺序是:先加载html,然后从里面解析

WebView加载HTML时图片适配屏幕

今天使用WebView加载HTML时,发现图片过大,没有适配屏幕,于是我设置webView.scalesPageToFit = YES,设置之后,图片确实小了,但是文字也相应地缩小了,而且图片太小,没事配屏幕,不符合我的要求,于是,我又想到了用js解决 1 - (void)webViewDidFinishLoad:(UIWebView *)web 2 { 3 int count = [[webView stringByEvaluatingJavaScriptFromString:@"docume

IOS UIwebView加载本地文件(支持显示图片)

1,本地的html文件一定要放到工程文件的根目录 2,html代码中的图片路径一定要是相对路径 3,下面是用UIWebView调用本地文件的方法 方法一: NSString *filePath = [[NSBundle mainBundle]pathForResource:@"1" ofType:@"html"]; NSString *htmlString = [NSString stringWithContentsOfFile:filePath encoding:

webView 加载本地html css javascript文件路径尝试

一:UIWebView加载数据的方式有三种: 1:- (void)loadRequest:(NSURLRequest *)request NSString * path = [[NSBundle mainBundle] pathForResource:@"demoFolder" ofType:@"html"]; NSURL *url = [NSURL URLWithString:path]; [self.webView1 loadRequest:[NSURLRequ