Как вы храните файл локально с помощью Apache Кордова 3.4.0

? Nathan @ | Original: StackOverFlow
---

Я имею проблему хранения файл локально на IOS (или Android) устройства с помощью "Файл" плагин Apache Кордовы . Проблема я верю, указав путь должным образом.

этосообщение об ошибке я получаю от Xcode Не удалось создать путь для сохранения загруженного файла :операция couldnU2019t быть завершена. ( Какао ошибка 512. )

Воткод, где я пытаюсь сохранить файл локально :

<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 ответ

1bottus @

Проверьте эти ссылки :

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

Первый и второй каналы обеспечивают вам информацию о файле плагина и как его установить .

Третий показать вам, как использовать плагин файлов.

Каждый раз, когда вам нужно что-то делать с Кордова, проверьтемодуль доступен, чтобы сделать это :)

regards.

2ar34z @

Ваш путь к файлу содержит опечатку (или грамматическую ошибку ) :

вар fileURL = " cdvfile : //localhost/persistant/file.png " ;

Вы должны написать это как стойкие .

Correct code:

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

До сих пор я только проверил это на Android, но я считаю, он должен работать как есть, или с незначительными изменениями на 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)
                })
            })
        }
    )
})

Обратите внимание, что я также необходимо содержимое файла, поэтомунемного в конце могут быть опущены, если вам не нужно содержимое во время скачивания .

Также обратите внимание, чтогораздо проще метод с использованием window.saveAs но она доступна только в Android 4.4.