使用$cordovaFile编码错误(5)

Encoding Error (5) using $cordovaFile

本文关键字:错误 编码 cordovaFile 使用      更新时间:2023-09-26

我使用ngCordova,特别是模块$cordovaFile从特定位置删除文件。更具体地说,我想删除一个图像,这是我在使用本教程之前保存的。

这很好,因为我的图像保存在文件夹中(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

(url是有效的,因为当我使用<img ng-src="nativeURL">标记时,它会在DOM中显示图像)。

我正试图使用以下语法删除此图像,但这会导致编码错误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))
        });
    }

所以,是的,我想看看你是否可以删除"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)...

我想让你提醒"name"的唯一原因是,我不确定substr()函数是否正是你想要的,但它可能是。

根据我的研究,这似乎是$cordovaFile.removeFile方法中的一个缺陷。到目前为止,我还没有找到任何解决方案。