如何从Cordova for iOS中的本机URI(资产库)访问图像

我有一个Cordova / PhoneGap应用程序,它使用相机拍摄照片。 我需要访问此图片才能发送到我的服务器。

对于Android我只需使用$cordovaFile.readAsDataURL(cordova.file.dataDirectory, fileName)

然而; 在iOS上,文件名不会返回。 我的iOS返回值显示路径为

资产库://asset/asset.JPG ID = 539425FE-43AA-48E7-9865-D76348208AC7及EXT = JPG

如何访问和阅读此图像? 我更喜欢坚持使用$ cordovaFile,但只是想让它发挥作用。

我正在使用CordovaCameraPreview插件,我可以从图片处理程序处理程序中找到的最好的插件似乎形成类似于:

assets-library://asset/asset.JPG?id = 990355E1-200A-4E35-AAA1-7D461E3999C8&ext = JPG assets-library://asset/asset.JPG?id = C49FF0EB-CCCB-45B2-8577-B13868D8DB29&ext = JPG

如何将其转换为我可以使用$ cordovaFile读取的文件名和路径? 根据他们的文档( http://ngcordova.com/docs/plugins/file/ ),看起来我需要使用他们的一个路径进行文件系统布局。 它使用cordova.file.dataDirectory在Android上工作正常,但无法弄清楚如何在iOS上访问

我也尝试过使用window.resolveLocalFileSystemURL(path)但是我的结果是未定义的。

更新

我觉得我越来越近了…使用window.resolveLocalFileSystemURL(path,resolveOnSuccess, resOnError); 我得到更多信息

 name: "assets-library" fullPath: "/asset/asset.JPG?id=711B4C9D-97D6-455A-BC43-C73059A5C3E8&ext=JPG" name: "asset.JPG?id=711B4C9D-97D6-455A-BC43-C73059A5C3E8&ext=JPG" nativeURL: "assets-library://asset/asset.JPG?id=711B4C9D-97D6-455A-BC43-C73059A5C3E8&ext=JPG" 

看起来我现在需要使用fullPath,但仍然无法弄清楚如何使用$ cordovaFile访问

如果我尝试使用$cordovaFile.readAsDataURL(cordova.file.dataDirectory, data.name) ,其中data.name是asset.JPG?id = 711B4C9D-97D6-455A-BC43-C73059A5C3E8&ext = JPG我得到一个文件未找到错误

更新2

我尝试使用http://ngcordova.com/docs/plugins/file/上提供的每个文件系统布局,并在每个文件系统布局上收到相同的文件未找到错误。 仍然不知道如何使用$ cordovaFile访问资产库中的文件

我有一段时间在类似问题上苦苦挣扎,但今天我想出来了。 我还认为FileSystem API不能与assets-libary:// URI一起使用 – 但事实并非如此。

您应该能够使用以下代码访问File对象(以及实际的图像名称):

 resolveLocalFileSystemURL('assets-library://asset/asset.JPG?id=711B4C9D-97D6-455A-BC43-C73059A5C3E8&ext=JPG', function(fileEntry) { fileEntry.file(function(file) { var reader = new FileReader(); reader.onloadend = function(event) { console.log(event.target.result.byteLength); }; console.log('Reading file: ' + file.name); reader.readAsArrayBuffer(file); }); }); 

我有一个简单的替代成功,就像这样

 fullPath = fullPath.replace("assets-library://", "cdvfile://localhost/assets-library/") 

它适用于iOS 9.3