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

时间:2014-11-07 16:45:22

标签: ios iphone ipad cordova

我已经构建了一个必须在iOS,Android和Windows Phone上运行的应用程序。除iOS外,所有工作都很好。我的应用程序使用相机拍摄照片,调整图像大小并保存图像。

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

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

VAR /移动/应用/ GUID-HERE /文档/ imageName.jpg

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

所以

  1. 我可以从HTML页面相对引用文档文件夹吗?
  2. OR

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

1 个答案:

答案 0 :(得分:1)

使用File插件的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=="
          }
      }
  );
}

img