2016-12-17 6 views
0

Я делаю приложение для android/ios с помощью ионного 2. Я хочу загрузить файл JSON с определенного URL-адреса в сети, а затем использовать его в своем приложении. Этот код выглядит так:Как использовать загруженный файл (ionic 2)

const imageLocation = `my url for .json file`; 
if (this.platform.is('ios')) { 
    targetPath = cordova.file.applicationStorageDirectory + "data.json"; 
} 
else if(this.platform.is('android')) { 
    targetPath = cordova.file.dataDirectory + "data.json"; 
    console.log(cordova.file.dataDirectory + "data.json"); 
} 
fileTransfer.download(imageLocation, targetPath).then((entry) => { 
    const alertSuccess = this.alertCtrl.create({ 
     title: `Download Succeeded!`, 
     subTitle: `file was successfully downloaded to: ${entry.toURL()}`, 
     buttons: ['Ok'] 
    }); 
    alertSuccess.present(); 
}, (error) => {.... 

Я хочу использовать этот загруженный файл у своего провайдера для извлечения данных из него. Как я могу это сделать?

+0

Это json-файл? Используйте http и не храните его. Cant хранит файлы в приложениях Android в любом случае, без разрешений – misha130

+0

'load(): any { if (this.data) { return Observable.of (this.data); } else { return this.http.get ('assets/data/data.json') .map (this.processData); } } '} Вот как я использую файл .json, находящийся внутри папки с ресурсами. Я хочу, чтобы решение использовало файл, загруженный в эту функцию, если это возможно. –

ответ

0

Если вы хотите сохранить файл, вы можете выбрать один из многих вариантов:

  • Сохранить его в localStorage
  • сохранить в SQLite базе данных
  • Использование WebStorage
  • Используйте новые технологии, как CouchDB и т. Д.

В противном случае, если файл не очень большой, не стесняйтесь просто хранить i t в локальной переменной поставщика, т. е. просто добавьте в ваш провайдер метод setter и передайте ему объект JSON, чтобы он хранил его у вашего провайдера. Обратите внимание: в этом случае данные будут потеряны при перезапуске приложения.

+0

load(): any { if (this.data) { return Observable.of (this.data); } else { return this.http.get ('assets/data/data.json') .map (this.processData); } } вот как я использую файл .json, который находится внутри папки с ресурсами. Я хочу, чтобы решение использовало файл, загруженный в эту функцию, если это возможно. –

+0

Возможно, я не понимаю, что вы подразумеваете под 'i want a решение использовать файл' - вы уже используете его :) У вас уже есть содержимое файла, правильно? Пожалуйста, объясните, в чем проблема. Я думал, что проблема в том, что данные исчезают после перезагрузки приложения, и это то, что мой адрес ответа. –

+0

файловые ресурсы/data/data.json поставляется с приложением, и я использую его только для тестирования, и это место только для чтения, я хочу знать, как загрузить файл в местоположение в android и ios, а затем я могу использовать его в моем провайдере таким же образом я использую тестовый файл –

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