4

PhoneGap アプリでモバイル デバイスにディレクトリを作成しようとしていますが、次のものが混在する同じエラーが引き続き発生します。

ENCODING_ERR - 5 - URL の形式が正しくありません。URL が完全で有効であることを確認してください。

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 );
}

初めてファイルを作成する場合、なぜ、またはどのようにそのファイル名が既に存在するのですか?

4

2 に答える 2

5

エラーを修正することができましたが、新しく作成されたディレクトリにファイルを作成するときに「ルート」を含める必要がないことがわかりました。

この問題または同様の問題で立ち往生している他の人のためのコード:

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 );
于 2013-09-05T11:09:46.623 に答える
1

requestFileSystem の successcallback では、「fileSystem」パラメータが渡されます。これは、簡単に言えば、File API のマザー (メイン オブジェクト/親) です。

successcallback で" fileSystem.root.getDirectory " を実行すると、基本的に " fileSystem.root " と同じ " directoryEntry "のパラメーターが渡されるため、 directoryEntry の下にリストされているすべてのメソッドにすぐにアクセスできますが、そうではありません。ルートを使用する必要があります。

于 2014-04-15T09:05:15.777 に答える