使用$ cordovaFile编码错误(5)

时间:2015-03-03 12:41:04

标签: javascript angularjs cordova phonegap-plugins

我正在使用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))

        });

    }

2 个答案:

答案 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方法中的一个缺陷。我还没有找到任何解决方案。