我正在尝试让我的PhoneGap应用程序在移动设备上创建目录,但我仍然遇到同样的错误,这些错误是以下内容的混合:
ENCODING_ERR - 5 - 网址格式错误。确保网址完整且有效。
PATH_EXISTS_ERR - 12 - 已存在具有相同路径的文件或目录。
INVALID_MODIFICATION_ERR - 9 - 不允许修改请求。例如,应用程序可能正在尝试将目录移动到其自己的子目录中,或者将文件移动到其父目录中而不更改其名称。
$( document ).on( 'click', '#A2', function () {
downloadPhoto();
} );
function downloadPhoto() {
alert( "Downloading" );
window.requestFileSystem( LocalFileSystem.PERSISTENT, 0, function systemSuccess( dirEntry ) {
alert( "Download about to begin" );
dirEntry.root.getDirectory( 'thisfilenamewillneverexist', { create: true }, function ( fileSystem ) {
alert( fileSystem );
}, errorHandler );
}, errorHandler );
}
function errorHandler( e ) {
var msg = '';
switch ( e.code ) {
case FileError.ENCODING_ERR:
msg = 'ENCODING_ERR';
break;
case FileError.INVALID_MODIFICATION_ERR:
msg = 'INVALID_MODIFICATION_ERR';
break;
case FileError.INVALID_STATE_ERR:
msg = 'INVALID_STATE_ERR';
break;
case FileError.NO_MODIFICATION_ALLOWED_ERR:
msg = 'NO_MODIFICATION_ALLOWED_ERR';
break;
case FileError.NOT_FOUND_ERR:
msg = 'NOT_FOUND_ERR';
break;
case FileError.NOT_READABLE_ERR:
msg = 'NOT_READABLE_ERR';
break;
case FileError.PATH_EXISTS_ERR:
msg = 'PATH_EXISTS_ERR';
break;
case FileError.QUOTA_EXCEEDED_ERR:
msg = 'QUOTA_EXCEEDED_ERR';
break;
case FileError.SECURITY_ERR:
msg = 'SECURITY_ERR';
break;
case FileError.TYPE_MISMATCH_ERR:
msg = 'TYPE_MISMATCH_ERR';
break;
default:
msg = 'Unknown Error';
break;
};
alert( 'Error: ' + msg );
}
如果我第一次创建该文件名,该文件名为何或如何存在?
答案 0 :(得分:5)
管理修复错误,结果发现在新创建的目录中创建文件时不需要包含“root”。
针对此问题或类似问题的其他人的代码:
var folderDir;
var fileDir;
var FolderName = "OSMaps";
$( document ).on( 'click', '#A2', function () {
window.requestFileSystem( LocalFileSystem.PERSISTENT, 0, downloadPhoto, errorHandler);
} );
function downloadPhoto(fileSystem) {
fileSystem.root.getDirectory( FolderName, { create: true, exclusive: false },
function ( dirEntry ) {
folderDir = dirEntry;
-> folderDir.getFile( 'test.jpg', { create: true, exclusive: false }, <-
function ( fileEntry ) {
fileDir = fileEntry;
}, errorHandler );
}, errorHandler );
答案 1 :(得分:1)
在requestFileSystem的成功回调中,您将被传递给&#34; fileSystem&#34;参数哪个 简单来说就是File API的母(主要对象/父对象)。
如果你做&#34; fileSystem.root.getDirectory &#34;在successcallback中,您将传递&#34; directoryEntry &#34;的参数。这基本上与&#34; fileSystem.root &#34;相同因此,您可以立即访问all the methods listed under directoryEntry,并且不需要使用根。