与How to check a file's existence in phone directory with phonegap完全相关,
这就是我在Android 4.0.4中所拥有的:
function checkIfFileExists(path, fileExists, fileDoesNotExist) {
var getFSSuccess = function(fileSystem) {
fileSystem.root.getFile(path, { create: false }, fileExists, fileDoesNotExist);
};
var getFSFail = function(evt) {
console.log(evt.target.error.code);
};
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, getFSSuccess, getFSFail); //of requestFileSystem
};
fileExists
和fileDoesNotExist
基本上是提醒,所以我知道发生了什么。
正在发生的事情是,即使文件存在,也正在执行fileDoesNotExist
。
path
类似于“file:///mnt/sdcard/DCIM/Camera/14112312312.jpg”,我得到的错误是ENCODING_ERR
。
更新:从名称中删除“file://”。我在getFSSuccess
的开头添加了
if (path.indexOf("file://") > -1) {
path = path.substring(7, path.length);
}
这解决了这个问题。
问题是:为什么以及iOS的解决方案是什么?我正在用全名更新tag的src属性(“file:///mnt/sdcard/DCIM/Camera/14112312312.jpg”)并且工作得很完美......
更新:如果文件是视频,则修复不起作用。我应该删除DCIM文件夹前的所有内容吗?
我认为与PhoneGap FileAPI Error Code 5 finding video in storage/emulated完全相关。
更新:看起来像这样
if (isAndroid() && path.indexOf("file://") > -1) {
path = path.substring(7, path.length);
} else if (isAndroid() && path.indexOf("file:") > -1) {
path = path.substring(5, path.length);
}
解决了这个问题。但我的问题仍然是,为什么?而且,我是否需要为iOS做类似的事情?