Wie kann man eine Datei zu speichern lokal mit Apache Cordova 3.4.0

? Nathan @ | Original: StackOverFlow
---

Ich habe ein Problem eine Datei lokal zu speichern auf einem iOS (oder android ) Gerät mit Apache Cordova " Datei" Plugin. Das Problem, das ich glaube, ist die Einstellung der Pfad richtig .

dies ist die Fehlermeldung, die ich von Xcode bekommen Pfad konnte nicht erstellt werden, um heruntergeladene Datei zu speichern : Die Operation couldnU2019t abgeschlossen sein. ( Cocoa Fehler 512 )

Hier ist der Code, wo ich bin versucht, die Datei lokal speichern :

<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">


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

var root;


function onDeviceReady(){
    // Note: The file system has been prefixed as of Google Chrome 12:
    window.requestFileSystem  = window.requestFileSystem || window.webkitRequestFileSystem;
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onInitFs, errorHandler);
}

function onInitFs(fs) {


    var fileURL = "cdvfile://localhost/persistant/file.png";

    var fileTransfer = new FileTransfer();
    var uri = encodeURI("http://upload.wikimedia.org/wikipedia/commons/6/64/Gnu_meditate_levitate.png");

    fileTransfer.download(
            uri,
            fileURL,
            function(entry) {
                console.log("download complete: " + entry.fullPath);
            },
            function(error) {
                console.log("download error source " + error.source);
                console.log("download error target " + error.target);
                console.log("upload error code" + error.code);
            },
            false,
            {
                headers: {
                    "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
                }
            }
    );
}


function errorHandler(e) {
  var msg = '';

  switch (e.code) {
    case FileError.QUOTA_EXCEEDED_ERR:
      msg = 'QUOTA_EXCEEDED_ERR';
      break;
    case FileError.NOT_FOUND_ERR:
      msg = 'NOT_FOUND_ERR';
      break;
    case FileError.SECURITY_ERR:
      msg = 'SECURITY_ERR';
      break;
    case FileError.INVALID_MODIFICATION_ERR:
      msg = 'INVALID_MODIFICATION_ERR';
      break;
    case FileError.INVALID_STATE_ERR:
      msg = 'INVALID_STATE_ERR';
      break;
    default:
      msg = 'Unknown Error';
      break;
  };

  alert('Error: ' + msg);
}

</script>
---

Top 5 Antwort

1bottus @

Schauen Sie sich diese Links :

http://cordova.apache.org/docs/en/3.4.0/cordova_plugins_pluginapis.md.html#Plugin%20APIs  https://github.com/apache/cordova-plugin-file/blob/dev/doc/index.md

http://cordova.apache.org/docs/en/3.0.0/cordova_file_file.md.html#File

Erste und zweite Links bieten Ihnen Informationen über das Plugin -Datei und wie es zu installieren .

Der dritte zeigen, wie Sie die Datei plugin zu verwenden.

Jedesmal, wenn man etwas mit Cordova zu tun, prüfen müssen, ob ein Plugin zur Verfügung steht, es zu tun :)

regards.

2ar34z @

Ihre Dateipfad enthält einen Tippfehler (oder eine Grammatik -Fehler) :

var fileURL = " cdvfile : //localhost/persistant/file.png " ;

Sie sollten es als persistent zu schreiben.

Correct code:

var fileURL = "cdvfile://localhost/persistent/file.png";
3Abram @

Bisher habe ich nur diese getestet auf Android, aber ich glaube, es sollte funktionieren, wie sie ist, oder mit wenig Veränderung auf IOS :

var url = 'example.com/foo'

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){
    fileSystem.root.getFile('foo_file', {create: true, exclusive: false},
        function(file_entry){
            var ft = new FileTransfer()
            ft.download(url, file_entry.toURL(), function(fe){
                fe.file(function(f){
                    reader = new FileReader()
                    reader.onloadend = function(ev){
                        console.log('READ!', ev.target.result)
                    }
                    reader.readAsText(f)
                })
            })
        }
    )
})

Beachten Sie, dass ich auch den Inhalt der Datei, so wird das Bit am Ende können weggelassen werden, wenn Sie die Inhalte zum Zeitpunkt des Herunterladens nicht brauchen werden.

Beachten Sie auch, dass es eine viel einfachere Methode mit window.saveAs aber es ist in Android 4.4 verfügbar.