H5在WKWebView中读取沙盒文件

方法一:

一种通过 Base64 的编码来解决 H5Image 标签显示图片的问题,当然了这里我就不介绍了

方法二:

Podfile 写入(关于 GCDWebServer,一个轻量级的 AppServer 框架。)

pod "GCDWebServer", "~> 3.0"

import GCDWebServer
/// 启动Server 参数自己定,但是directoryPath和forBasePath要定义好,我们写的是沙盒路径。
func initWebServer() {
    let webServer = GCDWebServer()
    webServer.addGETHandler(forBasePath: "/", directoryPath: NSHomeDirectory(), indexFilename: nil, cacheAge: 3600, allowRangeRequests: true)
    webServer.start(withPort: 9999, bonjourName: "GCD Web Server")
    print("Visit \(webServer.serverURL) in your web browser")
}

如果资源访问的是沙盒中的资源,如:

模拟器目录

<body isAutoLoadImage ='1' background = '/Users/HJiang/Library/Developer/CoreSimulator/Devices/BFE72029-56CE-4768-8312-05CA50250212/data/Containers/Data/Application/6CD99493-3C89-40F0-A7C4-353DBA7893F3/Documents/waterfile/6005001463_2025.jpg'>
真机路径

<body isAutoLoadImage ='1' background = '/var/xxxx/Library//Devices/BFE72029-56CE-4768-8312-05CA50250212/data/Containers/Data/Application/6CD99493-3C89-40F0-A7C4-353DBA7893F3/Documents/waterfile/6005001463_2025.jpg'>
使用的是沙盒中绝对路径,经测试此方式在模拟器上资源可以正常访问,真机无法访问资源

因webkit框架访问沙盒资源存在bug,无法加载通过绝对路径访问到资源.

// 比方说文件存在Library下有一个123的文件
NSString *basePath = @"http://localhost:9999/Library/water"; // 这样就可以访问到这个文件了,我只需要把我的文件名拼上localhost路径然后传给前端,他们拿到这个链接直接访问就可以拿到这个文件了

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容