web-dev-qa-db-fra.com

Comment créer un répertoire et un fichier dans ce répertoire en utilisant phoneiap file api?

J'utilise phoneiap file api pour créer un répertoire et créer un fichier dans le répertoire créé. Le répertoire est en cours de création, mais le fichier n'est pas créé dans le répertoire.

Le code que j'utilise est:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}

function gotFS(fileSystem) {
    var dataDir = fileSystem.root.getDirectory("data", {create: true});
    var file = dataDir.getFile("lockfile.txt", {create: true, exclusive: true});
}

Les données du répertoire sont créées mais lockfile.txt n'est pas créé.

15
mmathan

Vous devez appeler le code de manière asynchrone:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}

function gotFS(fileSystem) {
   fileSystem.root.getDirectory("data", {create: true}, gotDir);
}

function gotDir(dirEntry) {
    dirEntry.getFile("lockfile.txt", {create: true, exclusive: true}, gotFile);
}

function gotFile(fileEntry) {
    // Do something with fileEntry here
}
27
Simon MacDonald

Téléchargez le fichier de l'URL sur votre appareil en utilisant phonegap

Il fonctionne 3.0 et jusqu'à pour iOS et Android 

var folderName = 'xyz';
var fileName;

function downloadFile(URL) {
    //step to request a file system 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, fileSystemSuccess, fileSystemFail);

    function fileSystemSuccess(fileSystem) {
        var download_link = encodeURI(URL);
        fileName = download_link.substr(download_link.lastIndexOf('/') + 1); //Get filename of URL
        var directoryEntry = fileSystem.root; // to get root path of directory
        directoryEntry.getDirectory(folderName, {
            create: true,
            exclusive: false
        }, onDirectorySuccess, onDirectoryFail); // creating folder in sdcard
        var rootdir = fileSystem.root;
        var fp = fileSystem.root.toNativeURL(); // Returns Fullpath of local directory

        fp = fp + "/" + folderName + "/" + fileName; // fullpath and name of the file which we want to give
        // download function call
        filetransfer(download_link, fp);
    }

    function onDirectorySuccess(parent) {
        // Directory created successfuly
    }

    function onDirectoryFail(error) {
        //Error while creating directory
        alert("Unable to create new directory: " + error.code);

    }

    function fileSystemFail(evt) {
        //Unable to access file system
        alert(evt.target.error.code);
    }
}

function filetransfer(download_link, fp) {
    var fileTransfer = new FileTransfer();
    // File download function with URL and local path
    fileTransfer.download(download_link, fp,
        function(entry) {
            alert("download complete: " + entry.fullPath);
        },
        function(error) {
            //Download abort errors or download failed errors
            alert("download error source " + error.source);
        }
    );
}
0
Parth Devmorari
function download(URL, fileName){
   var folderName = 'xyz';
   var uri = encodeURI(URL);

        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
            function (fileSystem) {
                var directoryEntry = fileSystem.root; // to get root path of directory
                directoryEntry.getDirectory(folderName, {
                    create: true,
                    exclusive: false
                }, onDirectorySuccess, onDirectoryFail); 
                var filename = fileSystem.root.toURL() + folderName + "/" + uri.substr(uri.lastIndexOf("/") + 1);

                var fileTransfer = new FileTransfer();
                fileTransfer.download(uri, filename,
                    function(entry) { // download success
                        var path = entry.toURL(); //**THIS IS WHAT I NEED**
                        window.plugins.toast.showLongBottom("Download Completed: " + entry.fullPath, function (a) {
                        }, function (b) {
                        });
                    },
                    function(error) {
                        console.log("error")
                    } // irrelevant download error
                );`enter code here`
            },
            function(error) {
                console.log("error2")
            } // irrelevant request fileSystem error
        );

        function onDirectorySuccess(parent) {
            // Directory created successfuly
            console.log("Directory created successfuly: " + JSON.stringify(parent));
            var fp = (parent.nativeURL) + fileName;
            filetransfer(download_link, fp);
        }

        function onDirectoryFail(error) {
            //Error while creating directory
            alert("Unable to create new directory: " + error.code);
        }
    }
0
Parth Devmorari

Est-ce que ce travail?

var file = fileSystem.root.getFile("data" + "lockfile.txt", {create: true, exclusive: true});
0
luther