美文网首页
UIWebView和WKWebView加载本地图库选择的图片和视

UIWebView和WKWebView加载本地图库选择的图片和视

作者: 极客飞 | 来源:发表于2019-11-27 17:12 被阅读0次
    需求

    用WebView显示用户从手机相册中选择的图片或视频。

    一、UIWebView加载本地图库选择的图片或视频(真机)

    UIWebView实现很简单,直接调用JS方法,将选择的图片或视频的全路径分别放置<img><video>标签的src中就可以,直接就可以显示。

    部分代码参考
    插入图片JS方法
    function insertImage(url) {
            if(!url) return;
            document.execCommand('insertHtml', false, '<p><img class="MO_CLIP" style="max-width: 50% !important;" src="' + url + '"/></p><br>');
    }
    
    插入视频JS方法
    function insertVideo(url) {
            document.execCommand('insertHtml', false, '<p><video class="MO_CLIP" style="max-width: 50% !important; background:black;" src="' + url + '" controls="controls"></p><br>');
    }
    
    之后在选择图片或视频的回调中将路径传递进去就可以显示了。
    二、WKWebView加载本地图库选择的图片或视频(真机)

    WKWebView实现比较麻烦,直接按照UIWebView那种加载方法会发现在真机上显示不出来(网上有人说在模拟器上可以,有人说在真机上获取的路径有问题),用WKWebView实现的需要借助GCDWebServer,就是先在沙盒某一个目录下设置服务的根目录,将选择的图片或视频复制一份到沙盒目录某文件夹下,然后通过http://localhost/xxx这样的方式去找到复制的图片或者视频,之后再调用JS方法,将选择的图片或视频的全路径分别放置<img><video>标签的src中就可以,就可以显示了。需要用的三方库GCDWebServer

    部分代码参考
    插入图片和视频的JS方法和上述一致
    创建GCDWebSerVer单例
    + (GCDWebServer*)sharedInstance
    {
        static GCDWebServer *_sharedInstance = nil;
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            _sharedInstance = [[GCDWebServer alloc] init];
            NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                                          NSUserDomainMask,
                                                                          YES) objectAtIndex:0];
            [_sharedInstance addGETHandlerForBasePath:@"/" directoryPath:documentPath indexFilename:nil cacheAge:3600 allowRangeRequests:YES];// 此处设置本地服务器根目录
        });
        return _sharedInstance;
    }
    
    开启监听
    //本地服务开始监听
        if (![[GCDWebServerUtils sharedInstance] isRunning]) {//如果当前还在运行的话就不在启动了
            [[GCDWebServerUtils sharedInstance] startWithPort:80 bonjourName:nil];
        }
    

    综上,WKWebView加载的HTML中就再插入本地视频标签<video>和图片标签<img>就可以正常显示了。

    相关文章

      网友评论

          本文标题:UIWebView和WKWebView加载本地图库选择的图片和视

          本文链接:https://www.haomeiwen.com/subject/crrjkqtx.html