问题描述:首次加载列表,将图片下载到本地,如果用户点击清除缓存,将保存在本地的图片全部删除。
两种实现方式
1、plus.cache.calculate/clear,但是在iOS系统上正常,但在Android系统上获取的缓存值为0。无奈只好选择第二种方式。
2、单独将文件夹下的图片文件全部删除,
plus.io.resolveLocalFileSystemURL("_downloads/image/",function(entry){
entry.remove(function(e){
mui.toast("清除成功");}
},
function(err){mui.toast(err.message);
})
},function(err){});
但是却报错,错误内容:执行错误(不懂)。实在没招,来求助,希望帮忙解答,在此谢过!
明白了第二种方法的报错原因,entry.remove方法只可删除空目录,如果目录下有文件就会报错。现在我改用了entry.removeRecursively方法,可以执行成功,经测试,文件好像并未删除。如果我再次调用下面的代码(主要获取该文件夹下的文件大小)就会报错
plus.io.resolveLocalFileSystemURL("_downloads/image/",function(entry){
entry.getMetadata(function(metadata){
var s = metadata.size/(1024*1024);
document.getElementById("cacheSize").innerHTML = s.toFixed(1)+"M";
},function(err){console.log("获取文件大小失败");})
},function(err){console.log(err.message);})
真头疼
G_jia (作者)
我首先在线将图片缓存到本地,然后置为离线状态,此时可以正常读取本地图片信息,说明图片已缓存至本地。之后,我执行removeRecursively方法,提示执行成功,但是我还可以从本地读取到图片信息并正常显示,所以,得出结论:本地图片并未被删除。当我再次执行resolveLocalFileSystemURL方法,则提示执行错误信息。然后我联网再次缓存,resolveLocalFileSystemURL方法执行成功
2015-12-31 10:57
G_jia (作者)
@46
2015-12-31 10:58
G_jia (作者)
removeRecursively API的描述:删除目录将会删除其下的所有文件及子目录 不能删除根目录,如果操作删除根目录将会删除目录下的文件及子目录,不会删除根目录自身。
我删除的目录为“_downloads/image/”下的所有文件及子目录,并未删除image文件夹,为什么我再次调用resolveLocalFileSystemURL("_downloads/image/",,)会报错?
2015-12-31 11:30
G_jia (作者)
@46 给看看呗
2015-12-31 17:44
DCloud_App_Array
调用removeRecursively方法会删除当前操作的目录image,所以解析_downloads/image/会失败。另外,删除后还能读取,可能跟执行脚本的前后顺序有关,5+ API需要在plusready事件后才能执行,如果在此之前通过src去访问image目录肯定是可以加载到图片的。
2016-01-04 11:28
没得好名字
请问现在plus.cache.calculate这个能用了不?还是不生效。
2019-04-08 14:41