从cordova html页面(cordova)加载保存在iOS App Documents目录中的图像?

Posted

技术标签:

【中文标题】从cordova html页面(cordova)加载保存在iOS App Documents目录中的图像?【英文标题】:Load images saved in iOS App Documents directory from cordova html page (cordova)? 【发布时间】:2014-11-07 16:45:21 【问题描述】:

我已经构建了 1 个必须在 iosandroid 和 Windows Phone 上运行的应用程序。除了iOS,一切都很好。我的应用使用相机拍照,调整图像大小并保存图像。

在 iOS 上,这些图像被保存到应用程序的 tmp 目录中,该目录正在被删除,所以现在我将图像保存到 Documents 文件夹中。

然后我将此图像的路径保存到我的 sqlite 数据库中。在我的 html 页面上,我使用 url 引用文件,例如

var/mobile/application/GUID-HERE/Documents/imageName.jpg

现在看来,当我在 xCode 中重建我的应用程序时,应用程序 guid 已更改,因此我之前保存的所有文件引用现在都无效了。

所以

    我可以从我的 HTML 页面中相对引用文档文件夹吗?

    我可以停止我的应用程序更改此 GUID 吗?

【问题讨论】:

我认为应用程序 GUID 不必更改。如果我没记错的话,它发生在我的设备上,因为安装了另一个版本的应用程序。删除后,GUID 停止更改。我不知道您是否可以通过将源设置为 CDVFile://localhost/ 路径来加载图像,但如果可以,那么您可以从 FileSystem 获取本地路径并保存。 It looks like you can. 【参考方案1】:

使用文件插件的toInternalURL() 属性。保存图像后,您可以获得没有该 GUID 的本地 url,并将其保存到数据库中。网址有这种格式

cdvfile://localhost/persistent/path/to/file

Documentation

一个例子: (主要来自file-transfer docs。需要文件和文件传输插件)

resolveLocalFileSystemURL(cordova.file.documentsDirectory, function success(entry) 
    download(entry.toInternalURL() + "image.jpg");
);

var download = function(localUrl) 

    var fileTransfer = new FileTransfer();
    var uri = encodeURI("https://cordova.apache.org/images/cordova_bot.png");

    fileTransfer.download(
      uri,
      localUrl,
      function(entry) 
          document.body.innerHTML = entry.toInternalURL();
          var img = document.createElement("img");
          img.setAttribute('src', entry.toInternalURL());
          document.body.appendChild(img);

      ,
      function(error) 
          console.log("error code" + error.code);
      ,
      false,
      
          headers: 
              "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
          
      
  );

【讨论】:

如果您想将 cdvfile:// url 用作播放媒体的音频或视频标签的 src,它似乎不起作用。似乎只适用于图像。 @kindasimple 我只是存储我的图像 fileSystem.root.getDirectory/SmartMEdia/Jellyfish.jpg.. 你能告诉我如何访问这个文件吗? @DustinDempsey 如果使用 Angular,您可能需要这样做: var app = angular.module( 'myApp', [] ) .config( [ '$compileProvider', function( $compileProvider ) $ compileProvider.imgSrcSanitizationWhitelist(/^\s*(https?|file|blob|cdvfile):|data:image\//); ]);礼貌:forum.ionicframework.com/t/…

以上是关于从cordova html页面(cordova)加载保存在iOS App Documents目录中的图像?的主要内容,如果未能解决你的问题,请参考以下文章

Cordova - 从远程 HTML 访问设备功能

Cordova iOS 应用程序,从后台模式返回后的页面性能问题

使用 Cordova 从网站中提取文本

phonegap(cordova)从手机app跳转到web页面在跳转回APP本地页面思路

H5页面中如何调用cordova的插件?

Cordova 插件从本机函数获取异步响应