我在iOS上使用了cordova 3.4和org.apache.cordova.file(最新版本1.3.1)。
我想将数据存储在Library / NoCloud目录中,我发现在doc中我们应该在config.xml中设置这些变量:
<preference name="iosPersistentFileLocation" value="Library" />
<preference name="iosExtraFilesystems" value="library-nosync" />
但它不起作用,它给了我一个库/文件中的文件系统根目录,我无法移动到NoCloud目录,因为我们无法获取根库/文件的父目录。
有人也在为这个问题而苦苦挣扎吗?您是否成功使用了iosExtraFilesystems var?
我正在尝试升级cordova但我在做这件事时还有其他问题..我会发布进一步的进展。
更新:
不使用cordova 3.5,3.6,我在apache的jira跟踪器上创建了一个问题:https://issues.apache.org/jira/browse/CB-7687
谢谢
巴尔
答案 0 :(得分:13)
执行此操作的最简单方法(自v1.2.0起)具有cordova.file.dataDirectory
属性。它应该是library-nosync目录的路径。您可以将它与resolveLocalFileSystemURL
结合使用,以获取可以在其中创建文件的目录条目对象。
这样的事情应该有效:
resolveLocalFileSystemURL(cordova.file.dataDirectory, function(entry) {
console.log("Success! Got a DirectoryEntry");
// Do more things with `entry` here
}, function(error) {
console.error("Something bad happened, and we didn't get a DirectoryEntry");
});
澄清您在问题中提到的两个设置:
<preference name="iosPersistentFileLocation" value="Library" />
此首选项只是告诉File插件,默认情况下,PERSISTENT
文件系统应该将文件存储在设备的Library
目录下。如果没有该设置,则默认值为先前Cordova版本Documents
目录使用的位置。无论如何,库文件系统可供您的应用程序使用(只要您没有使用下一个设置禁用它)
<preference name="iosExtraFilesystems" value="library-nosync" />
iosExtraFilesystems
首选项告诉File插件除了要安装的默认值(临时和持久)之外,还有哪些文件系统根目录。默认情况下,它设置为字符串
"library,library-nosync,documents,documents-nosync,cache,bundle,root"
这已包含library-nosync
,因此您不必添加它。实际上,按照实际的方式设置它会从应用程序中删除其他文件系统根目录。
答案 1 :(得分:0)
这个答案都归功于Wei Li:https://github.com/weili-feedhenry/dotfiles/issues/1,您应该阅读他关于cordova文件系统插件的帖子:http://web.archive.org/web/20160731021013/http://www.feedhenry.com/several-ways-avoid-problems-cordova-file-api-mobile-apps
显然,File API文档不是最新的,为了检索您想要的文件系统,您需要在requestFileSystem调用中更改请求文件系统类型。 例如:
window.requestFileSystem(3, 0, function(fs){
alert("dataDirectory = " + cordova.file.dataDirectory);
alert("root = " + fs.root.toURL());
fs.root.getFile("test.txt", {create: true, exclusive: true});
}, function(){
alert("failed to get file system”)
});
注意上面调用中的文件系统类型是“3” - 假设您只在config.xml文件中添加了以下首选项:
如果更改iosExtraFilesystems的值,则可能需要相应地调整请求类型的值。