UIWebView和WKWebView加載本地圖庫選擇的圖片和視頻

需求

用WebView顯示用戶從手機(jī)相冊中選擇的圖片或視頻。

一、UIWebView加載本地圖庫選擇的圖片或視頻(真機(jī))

UIWebView實(shí)現(xiàn)很簡單,直接調(diào)用JS方法,將選擇的圖片或視頻的全路徑分別放置<img><video>標(biāo)簽的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>');
}
之后在選擇圖片或視頻的回調(diào)中將路徑傳遞進(jìn)去就可以顯示了。
二、WKWebView加載本地圖庫選擇的圖片或視頻(真機(jī))

WKWebView實(shí)現(xiàn)比較麻煩,直接按照UIWebView那種加載方法會(huì)發(fā)現(xiàn)在真機(jī)上顯示不出來(網(wǎng)上有人說在模擬器上可以,有人說在真機(jī)上獲取的路徑有問題),用WKWebView實(shí)現(xiàn)的需要借助GCDWebServer,就是先在沙盒某一個(gè)目錄下設(shè)置服務(wù)的根目錄,將選擇的圖片或視頻復(fù)制一份到沙盒目錄某文件夾下,然后通過http://localhost/xxx這樣的方式去找到復(fù)制的圖片或者視頻,之后再調(diào)用JS方法,將選擇的圖片或視頻的全路徑分別放置<img><video>標(biāo)簽的src中就可以,就可以顯示了。需要用的三方庫GCDWebServer。

部分代碼參考
插入圖片和視頻的JS方法和上述一致
創(chuàng)建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];// 此處設(shè)置本地服務(wù)器根目錄
    });
    return _sharedInstance;
}
開啟監(jiān)聽
//本地服務(wù)開始監(jiān)聽
    if (![[GCDWebServerUtils sharedInstance] isRunning]) {//如果當(dāng)前還在運(yùn)行的話就不在啟動(dòng)了
        [[GCDWebServerUtils sharedInstance] startWithPort:80 bonjourName:nil];
    }

綜上,WKWebView加載的HTML中就再插入本地視頻標(biāo)簽<video>和圖片標(biāo)簽<img>就可以正常顯示了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容