2015-04-19 4 views
0

Я пользуюсь Phonegap/cordova и пишу приложение Android/iOS, которое будет загружать данные json с моего сервера и хранить локально на устройстве для использования в автономном режиме. На андроиде это работает отлично. У меня нет устройства iOS, поэтому я полагаюсь на симулятор iOS, и он бросает мне ошибку типа «не удалось создать целевой файл».Phonegap & iOS simulator - невозможно сохранить загруженный файл

downloadFile:function(path,uri){ 
    var fileTransfer = new FileTransfer(); 

    fileTransfer.download(
    encodeURI(path), 
    app.getStorageLocation()+"files/"+uri, 
    function(entry) { 
     console.log("download complete: " + entry.toURL()); 
     app.progressMove(); 
    }, 
    function(error) { 
     console.log("download error source " + error.source); 
     console.log("download error target " + error.target); 
     console.log("upload error code" + error.code); 
    }, 
    false); 

} 

Функция getStorageLocation является:

getStorageLocation:function(){ 
    if(device.platform == 'Android'){ 
     return cordova.file.externalApplicationStorageDirectory; 
    } 
    else if(device.platform == 'iOS'){ 
     return cordova.file.documentsDirectory; 
    }else{ 
     throw new Error('Unsupported platform: '+device.platform); 
    } 
} 

КСН тренажере, он делает вернуться в каталог Documents, но выше не писать в него. Будет ли это просто ошибкой Simulator или я сделал что-то неправильно?

спасибо!

+0

вам нужно создать папки и файлы, которые должны быть созданы в каталоге документов –

+0

Как мне это сделать? Я использовал код из http://stackoverflow.com/questions/26806028/load-images-saved-in-ios-app-documents-directory-from-cordova-html-page-cordova, и он все еще не работа ...... –

ответ

1

Я создал один файл с именем dummy.html в каталоге документов. Ниже приведен фрагмент рабочего кода для загрузки файла. Вы можете зарегистрировать путь и посмотреть, где его указывать. Используйте средство моделирования iOS для разработки сафари для проверки. Я добавил файл & filetransfer плагин.

function downloadFile() { 
window.requestFileSystem(
    LocalFileSystem.PERSISTENT, 0, 
    function onFileSystemSuccess(fileSystem) { 
     fileSystem.root.getFile(
      "dummy.html", { 
       create: true, 
       exclusive: false 
      }, 
      function gotFileEntry(fileEntry) { 
       console.log(fileEntry); 
       var sPath = fileEntry.nativeURL.replace("dummy.html", ""); 
       console.log(sPath); 
       var fileTransfer = new FileTransfer(); 
       fileEntry.remove(); 
       fileTransfer.download(
        "http://developer.android.com/assets/images/home/ics-android.png", 
        sPath + "dummy.png", 
        function(theFile) { 
         console.log("download complete: " + theFile.toURI()); 
         showLink(theFile.toURI()); 
        }, 
        function(error) { 
         console.log("download error source " + error.source); 
         console.log("download error target " + error.target); 
         console.log("upload error code: " + error.code); 
        } 
       ); 
      }, 
      fail); 
    }, 
    fail); 

}

Проверить screenshot-

enter image description here

+0

это работает только в симуляторе? на реальном устройстве это все еще работает? –

0

отлично! заставил его работать. Кроме того, было обнаружено, что не все файлы были проблематичными. Apple не любит настраиваемые типы файлов или имена файлов с «% 20» в них. Исправлено все вышеперечисленное!

Смежные вопросы