(IOS)Cordova摄像头插件,指删除的图像
我正在构建一个cordova应用程序(主要针对IOS和Android),用户可以在其中拍摄图像、重拍(等)图像并将其保存到本地 我现在正在和科尔多瓦卡默拉普卢金斗争。下面是对问题的简短描述 当用户拍摄图像时,图像将保存在本地的apps temp文件夹中,用户可以在UIWebView中查看。重新拍摄时,映像将从临时文件夹中删除,并且不再可用(在RAM和本地FS中)。 只要用户不重新获取图像2次或2次以上,它就可以工作,如果用户重新获取图像而不是最后一幅图像,则第一幅图像将在WebView中被引用/渲染。重新打开应用程序后,图像将正确显示 例如:(IOS)Cordova摄像头插件,指删除的图像,ios,image,cordova,camera,Ios,Image,Cordova,Camera,我正在构建一个cordova应用程序(主要针对IOS和Android),用户可以在其中拍摄图像、重拍(等)图像并将其保存到本地 我现在正在和科尔多瓦卡默拉普卢金斗争。下面是对问题的简短描述 当用户拍摄图像时,图像将保存在本地的apps temp文件夹中,用户可以在UIWebView中查看。重新拍摄时,映像将从临时文件夹中删除,并且不再可用(在RAM和本地FS中)。 只要用户不重新获取图像2次或2次以上,它就可以工作,如果用户重新获取图像而不是最后一幅图像,则第一幅图像将在WebView中被引用/
function getPhoto() {
navigator.camera.getPicture(getPhotoOnSuccess, getPhotoOnFail, {
quality: 25,
destinationType: Camera.DestinationType.FILE_URL,
correctOrientation: true,
encodingType: Camera.EncodingType.PNG
});
}
在getPhotoOnSuccess中,我基本上是将图像路径保存到db中,并使用jQuery将其附加到视图中
以及删除图像的代码:(旁注:我对目标C不熟悉)
删除该文件后,该文件不再位于目录中,因此我猜它可以正常工作。
一个重要的细节可能是,我编写了自己的IOS cordova插件,因为cordova提供的文件系统访问方法很糟糕
就这样。
具体的问题是:为什么会发生这种情况以及如何发生这种情况,是否有机会改变这种行为?如果是,我应该如何进行
顺便说一下,我使用的是cordova 3.1.0,构建目标是IOS 7
提前谢谢。好了,伙计们,我终于拿到了 整个问题与我的代码或任何cordova代码无关。 那么为什么会这样呢?==>我不太清楚,因为似乎很多人都遇到过这个bug,或者你可以叫它什么 他们都像我一样试图删除或停用缓存,他们的一些问题与我的问题非常接近,但大多数都不是,所以我花了一段时间才找到解决方案 我阅读并尝试将时间戳附加到图像路径,结果成功了! 我的结论是,UIWebView和缓存管理可能存在问题。
或者这可能证明是一个一般的WebView问题,几天后我将能够在Adroid设备上检查这一点。您找到Android的解决方案了吗?我现在在Android上也遇到了同样的问题。@jeewan它在Android上也对我有效,但我想这在很大程度上取决于处理文件IO的底层插件/代码。我建议您为它编写自己的插件(如果您还没有)我们最终放弃了Cordova的努力,不再使用本机应用程序,因为Cordova存在太多问题,而且性能对客户不友好。但也许,这在去年已经改变了。
- (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];
}