iOS H5 访问本地文件失败

568 阅读1分钟

记录一个问题 项目中使用了Cordova 框架进行跨平台开发,其本质是在WKWebView上加载H5, 项目中有一个功能需要通过XMLHttpRequest访问本地文件然后由webSocket上传至设备,在Android中,是可以根据相对路径读取本地文件,然后上传至服务器。但是iOS系统在XMLHttpRequest读取文件时,会提示失败,状态码对应的是XMLHttpRequest.status==0 ,readyState=4。

解决方法: 本地构建一个服务器,推荐GCDWebServer 设置GCD的BasePath,确保文件在BasePath目录下,请求时将BasePath替换成http://localhost/ + filepath 这样就可以正常的访问本地文件了。 下面是GCD的使用

NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

    _webSever = [[GCDWebServer alloc] init];

    [_webSever addGETHandlerForBasePath:@"/" directoryPath:documentPath indexFilename:nil cacheAge:3600 allowRangeRequests:YES];// 此处设置本地服务器根目录

当然GCDWebServer,还有更多用处,可以深入研究下!!!