(IOS)cordova相机插件参考删除的图像

我正在构build一个cordova应用程序(主要用于iOS和Android),用户可以在该应用程序中拍摄图像,重新拍摄(等)并将其保存到本地。

我目前正在与cordovacameraPlugin奋斗。 所以,这里是对问题的简短描述。

当用户拍摄图像时,将其保存在应用程序的临时文件夹中,用户可以在UIWebView中查看。 重新拍摄时,图像将从临时文件夹中删除,不应再有效(在RAM和本地FS中)。 只要用户不重拍图片2次或更多次,只要他做了,而不是最后一张图片,第一张图片将在WebView中被引用/渲染。 重新打开应用程序后,图像显示正确。

一个例子:

  1. 用户拍摄第一张图片。 ==> cdv_photo_001.png
  2. 第二。 ==> cdv_photo_002.png和第一个将被删除(这似乎工作正常)
  3. 第三个 ==> cdv_photo_001.png,第二张图片将被删除。

第三张图像看起来与第一张相同。 第三个之后的每个图像都会发生这种情况。 重新启动应用程序后,它工作正常

我已经尝试禁用应用程序caching,在更新图像之前删除应用程序caching,刷新页面并在线查找答案。

打开相机UI时出现错误,但找不到解决方法。

对未呈现的视图进行快照会产生空的快照。 确保您的视图在屏幕更新后的快照或快照之前至less已呈现一次。

相机的代码Call:

function getPhoto() { navigator.camera.getPicture(getPhotoOnSuccess, getPhotoOnFail, { quality: 25, destinationType: Camera.DestinationType.FILE_URL, correctOrientation: true, encodingType: Camera.EncodingType.PNG }); } 

在getPhotoOnSuccess我基本上保存的图像path到数据库,并附加到jQuery的视图。

并删除图像的代码:(旁注我对目标C新)

 - (void) deleteImageByPath:(NSString *)imagePath withSelector:(SEL)selector{ NSError *error = nil; NSFileManager *mgr = [NSFileManager defaultManager]; NSString *tempFolder = NSTemporaryDirectory(); if([mgr removeItemAtPath: imagePath error:&error] == NO) { NSLog(@"File deleted"); } //The files can be edited as well, so there can be two files in different directories if(error != nil){ NSString *imgEl = tempFolder; imgEl = [imgEl stringByAppendingPathComponent:imagePath.lastPathComponent]; if(![mgr removeItemAtPath:imgEl error:&error]){ NSLog(@"Old element couln't be deleted."); } } [self performSelector:selector withObject:error]; } 

该文件删除后不再在目录中,所以我想它的工作原理。 一个重要的细节可能是,我写了自己的IOS cordova插件,因为cordova提供的文件系统访问方法很糟糕。

就是这样了。 具体问题是:为什么发生这种情况,是否有机会改变这种行为? 如果是的话,我该怎么做?

顺便说一下,我使用的是cordova 3.1.0,构build目标是IOS 7。

提前致谢。

好的人,我终于明白了。

整个问题与我的代码或任何cordova代码无关。 那为什么发生呢? ==>我不完全知道,因为这个bug或者任何你可能称之为的东西似乎已经出现在很多人身上。

他们都试图像我一样删除或停用caching,他们的一些问题非常接近我自己的问题,但大多数都不是,所以我花了一段时间直到find解决scheme。

我读这个线程,并试图追加一个时间戳到图像path,它的工作! 我的结论是,UIWebView和cachingpipe理可能存在问题。
或者它可能certificate是一个普遍的WebView问题,我将能够在几天内在Adroid设备上进行检查。