我正在使用ngCordova,特别是模块$cordovaFile来从特定位置删除文件。更具体地说,我想删除在使用this tutorial之前保存的图像。
这可以正常工作,因为我的图像保存在文件夹(iOS)中:
file:///var/mobile/Containers/Data/Application/[APP_ID]/Library/NoCloud/
请注意,使用cordova.file.dataDirectory
我也可以获取此位置。
现在我有一张图片,其格式为nativeURL
,如上所示:
file:///var/mobile/Containers/Data/Application/[APP_ID]/Library/NoCloud/imagename.jpg
(当我使用<img ng-src="nativeURL"
&gt;标记时,网址在DOM中显示图片时有效。
我正在尝试使用以下语法删除此图像 - 但这会引发一个encoding error 5。有什么想法如何解决?
var removeFile = function(nativeURL) {
var name = nativeURL.substr(nativeURL.lastIndexOf('/') + 1);
$cordovaFile.checkFile(cordova.file.dataDirectory, name)
.then(function (success) {
window.alert("file found " + success)
$cordovaFile.removeFile(cordova.file.dataDirectory, name)
.then(function (success) {
// success
window.alert("file deleted " + success)
}, function (error) {
// error
window.alert("file not deleted error " + error)
});
}, function (error) {
// error - here I get the ENCODING_ERR 5
window.alert("file not found " + JSON.stringify(error))
});
}
答案 0 :(得分:1)
所以是的,我会看到你是否可以删除'file://',我会怀疑checkFile函数不知道如何处理它。在你处理删除之前(我不确定它是如何实现的,如果这有效,你将需要向后工作一点才能找到它。),你可以通过设置来测试它
var name = nativeURL.substr(nativeURL.lastIndexOf('/') + 1);
var file = /var/mobile/Containers/Data/Application/[APP_ID]/Library/NoCloud/imagename.jpg;
$cordovaFile.checkFile(file, name)...
我希望你提醒“名字”的唯一原因是因为我不确定substr()函数是否完全符合你的要求,但它可能是。
答案 1 :(得分:-4)
我遇到了完全相同的问题。根据我的研究,这似乎是$ cordovaFile.removeFile方法中的一个缺陷。我还没有找到任何解决方案。