我有一个使用文件插件的cordova应用程序,在应用程序内部一切正常,但我使用的文件不会出现在文件资源管理器中。
我的课程是:
function FileCordova () {
this.createDir = function(dirName, callback) {
App.db.fsSetup();
if (App.db.hasFS()) {
window.requestFileSystem(window.PERSISTENT, 0, function (f) {
f.root.getDirectory(dirName, {create: true}, function (d) {
typeof callback === 'function' && callback(d.name, d.fullPath);
},
function(error, err2){
console.log(error);
});
}, function(error,err2){
console.log(error);
});
} else {
typeof callback === 'function' && callback();
}
};
}
在应用程序文件内部出现,但我无法在根目录中找到。
答案 0 :(得分:2)
我最近不得不在我的应用中执行此操作。我使用window.resolveLocalFileSystemURL()
方法代替window.requestFileSystem()
:
var exportDirectory = "";
var subdir = "MySubdirectory";
// What directory should we place this in?
if (cordova.file.documentsDirectory !== null) {
// iOS, OSX
exportDirectory = cordova.file.documentsDirectory;
} else if (cordova.file.sharedDirectory !== null) {
// BB10
exportDirectory = cordova.file.sharedDirectory;
} else if (cordova.file.externalRootDirectory !== null) {
// Android, BB10
exportDirectory = cordova.file.externalRootDirectory;
} else {
// iOS, Android, BlackBerry 10, windows
exportDirectory = cordova.file.DataDirectory;
}
window.resolveLocalFileSystemURL(exportDirectory, function (directoryEntry) {
console.log("Got directoryEntry. Attempting to open / create subdirectory:" + subdir);
directoryEntry.getDirectory(subdir, {create: true}, function (subdirEntry) {
subdirEntry.getFile(filename, {create: true}, function (fileEntry) {
console.log("Got fileEntry for: " + filename);
fileEntry.createWriter(function (fileWriter) {
console.log("Got fileWriter");
// make your callback to write to the file here...
}, exportFail);
}, exportFail);
}, exportFail);
}, exportFail);
但请注意,Android文件传输实用程序未正确刷新。我不得不断开/重新连接USB电缆,然后显示目录。这实际上可能是您使用文件资源管理器的问题(即,在更改代码之前检查)。
答案 1 :(得分:1)
我认为重点在于您将文件保存在App Data Directory(私有)中,如果您想将其置于公共场所(允许以这种方式在文件浏览器中查看),您必须查看{{ 3}}文档并选择一个公共位置,例如在cordova.file.externalRootDirectory