He leído un montón de mensajes, pero no tengo la respuesta FINAL.
A partir del código en este enlace, tengo mi archivo descargado en la app. De todos modos, me gustaría ver que en la carpeta «Descarga».
Estoy usando Android, pero claramente me gustaría una solución válida para iOS también.

InformationsquelleAutor Zappescu | 2017-04-23

1 Comentario

  1. 8

    EDITAR

    Si usted ya conoce la ruta de acceso del archivo sólo se puede mover es:

    JS:

    var storageLocation = "";
    console.log(device.platform);
    switch (device.platform) {
    
        case "Android":
            storageLocation = 'file:///storage/emulated/0/';
            break;
        case "iOS":
            storageLocation = cordova.file.documentsDirectory;
            break;
    
    }
    
    
    var fileUri = "file:///data/user/0/com.arsdigitalia.myapp/files/files/MyApp‌​/test.pdf"
    
    function moveFile(fileUri) {
        window.resolveLocalFileSystemURL(
              fileUri,
              function(fileEntry){
    
                    var parentEntry = storageLocation + "Download";
                   
                    //move the file to a new directory and rename it
                   fileEntry.moveTo(parentEntry, "newFile.pdf", success, fail);
                           
              },
              errorCallback);
    }

    Original

    Aquí es una muestra de una pieza de código que uso para lograr esto. Funciona mejor en Android, iOS es un poco diferente debido a la aplicación de sandboxing lo que usted necesita para manejar la recuperación de archivos usted mismo. Yo también uso el Córdoba dispositivo plugin para determinar qué dispositivo se ejecuta la aplicación, que puede cambiar las rutas de almacenamiento para satisfacer:

    JS:

    var storageLocation = "";
    console.log(device.platform);
    switch (device.platform) {
    
        case "Android":
            storageLocation = 'file:///storage/emulated/0/';
            break;
        case "iOS":
            storageLocation = cordova.file.documentsDirectory;
            break;
    
    }
    
    window.resolveLocalFileSystemURL(storageLocation,
        function (fileSystem) {
    
            fileSystem.getDirectory('Download', {
                    create: true,
                    exclusive: false
                },
                function (directory) {
    
                    //You need to put the name you would like to use for the file here.
                    directory.getFile("YOUR_FILE_NAME", {
                            create: true,
                            exclusive: false
                        },
                        function (fileEntry) {
    
    
                            fileEntry.createWriter(function (writer) {
                                writer.onwriteend = function () {
                                    console.log("File written to downloads")
                                };
    
                                writer.seek(0);
                                writer.write(YOUR_FILE_HERE); //You need to put the file, blob or base64 representation here.
    
                            }, errorCallback);
                        }, errorCallback);
                }, errorCallback);
        }, errorCallback);
    
    var errorCallback = function(e) {
        
        console.log("Error: " + e)
        
    }

    A continuación, para recuperar la lista de archivos desde el directorio en el que usted puede usar:

    JS:

    window.resolveLocalFileSystemURL(storageLocation,
        function (fileSystem) {
        
            fileSystem.getDirectory('Download', {
                    create: true,
                    exclusive: false
                },
                function (directory) {
    
                    var reader = directory.createReader();
                    reader.readEntries(function (files) {
    
                        if (files.length == 0) {
    
                            console.log("No files found in downloads folder.")
    
                        } else {
    
                            $.each(files, function (i, v) {
    
                                console.log("File Name: " + files[i].name;)
    
                            });
    
                        }
    
                    }, getFilesFail);
                }, getFilesFail);
        }, getFilesFail);
    
    var getFilesFail = function(e) {
        
        console.log("Error: " + e);
        
    }

    Instalar el plugin utiliza este comando:

    cordova plugin add cordova-plugin-device
    

    Documentación aquí:

    https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-device/

    • para la línea de escritor.escribir(YOUR_FILE_HERE); creo que no se puede utilizar la ruta de archivo como YOUR_FILE_HERE. De hecho tengo: file:///datos/usuario/0/com.arsdigitalia.myapp/files/archivos/MyApp/prueba.pdf, pero el archivo original de 400kB no está bien copiado (he encontrado un archivo de 80B en la carpeta de descargas). Sugerencias?
    • Ok he utilizado el readBinaryFile se explica en el plugin oficial doc (github.com/apache/…) y tengo el archivo. Sólo una respuesta final: tengo acceso al archivo utilizando un gestor de archivos, y ver en la carpeta de descarga, de todos modos, en la «oficial» de la carpeta de descarga en Android 7.1 (el icono en el escritorio) no lo veo. Por qué?
    • He editado mi post para incluir una función que debe mover un archivo de un directorio a otro. Creo que la razón por la que no se puede ver en el oficial de descarga de la aplicación es porque no se ha descargado a la carpeta Android download manager.
    • Ok, pero usted debe cambiar su función a esta: la ventana.resolveLocalFileSystemURL( archivouri, función (fileEntry) { var parentEntry = storageLocation + «Descargar»; window.resolveLocalFileSystemURL(parentEntry, la función (de la tienda) { // mueve el archivo a un directorio nuevo y cambiar el nombre fileEntry.moveTo(la tienda, «newFile.pdf», function () { console.log(«hecho en movimiento»); }, function () { console.log(«error al mover»); }); },errorCallback); }, errorCallback);
    • Estás diciendo carpeta de Descargas es en file:///storage/emulated/0/Download para Android

Dejar respuesta

Please enter your comment!
Please enter your name here