应用程序IOS升级后,imageURI发生了变化

我有一个jquery移动应用程序(phonegap构建)。 我有一个function,可以从设备的照片库中获取图像的uri。 我将uri作为字符串存储在本地存储中,因此下次打开页面时,将使用uri显示图像。 所有这一切工作正常(我没有得到图像的Data-UrI,因为我不想用尽本地存储,我当然不希望将图像上传到服务器,因为该应用程序被用于学校(隐私问题)。在设备上很好。一切正常,直到我对应用程序进行更新。安装更新后,图像的URI会发生变化。如何获得所选图片的静态URI。这是我用来从图库中获取图像的代码:

// JavaScript Document //Get Picture stuff navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, destinationType: destinationType.FILE_URI, sourceType:Camera.PictureSourceType.SAVEDPHOTOALBUM}); var pictureSource; // picture source var destinationType; // sets the format of returned value pictureSource=navigator.camera.PictureSourceType; destinationType=navigator.camera.DestinationType; function onPhotoURISuccess(imageURI) { // Uncomment to view the image file URI console.log(imageURI); localStorage.setItem("piclink", imageURI) // Get image handle var largeImage = document.getElementById('largeImage'); // Unhide image elements largeImage.style.display = 'block'; // Show the captured photo // The inline CSS rules are used to resize the image largeImage.src = imageURI; } // Called if something bad happens. function onFail(message) {alert('Failed because: ' + message); } 

我应该提一下,我申请的更新不会对相机代码进行任何更改。 所有数据都保留在localstorage中,我可以通过控制台看到它保存并调用URI没有问题,但是在更新后的URI路径中,路径发生了变化(一串巨大的数字和短划线)。 顺便说一句,Android版本没有问题。 任何帮助将不胜感激

我的理解是你保存到localStorage的imageURI只是由CDV Camera插件处理的cdv_ *命名临时文件。 正如user2603892正确指出的那样,您似乎关注的是应用于更新的新应用位置标识符。 但是,可能还有其他一些问题需要考虑……相机插件会依次将临时文件命名为从库中挑选出来的文件,或者将其视为照片。 cdv_photo_001.jpg,cdv_photo_002.jpg等等。直到你执行camera.cleanup(),这将删除cdv_ *文件。

该插件将这些文件存储在应用程序根目录下的/ tmp文件夹中。 显然,这也不会被iOS在更新时复制。

来自模拟器的示例:imageURI = file:///Users/xxxxxxx/Library/Application%20Support/iPhone%20Simulator/7.0.3/Applications/B7B2005C-C116-4BCB-897D-CD46672123C3/tmp/cdv_photo_001.jpg

建议将文件(不是文件名)重命名并保存到1)Documents文件夹,或2)Application Support文件夹,然后引用它以备将来使用。

希望这可以帮助。

我知道这是一个古老的post,但我认为会分享我的发现,希望它能帮助别人。 我在一个应用程序上遇到了同样的问题,该应用程序必须在本地存储图像而不将它们上传到服务器。 似乎问题正在发生,因为iTunes将更新安装在新的应用程序目录中,如“ iOS应用程序编程指南”中所述

应用程序更新期间保存的文件当用户下载应用程序更新时,iTunes会将更新安装在新的应用程序目录中。 然后,在删除旧安装之前,它会将用户的数据文件从旧安装移动到新的应用程序目录。 保证在更新过程中保留以下目录中的文件:

 /Documents /Library 

虽然其他用户目录中的文件也可能会被移动,但您不应该在更新后依赖它们。

正如这里所讨论的

您在post中提到的“巨大的数字和短划线”是应用程序目录。 这会在每次更新时发生更改,因此保存的URI将与更新后的当前URI不同。

我还在寻找一个解决方法,但还没有找到任何东西。