2015-02-13 2 views
2

Я работаю над приложением Meteor Cordova, которое должно работать в автономном режиме.Приложение Cordova Meteor не разрешено загружать локальный ресурс

Я использую ground: db для кэширования моих данных в автономном режиме, который отлично работает, кроме изображений. У меня есть коллекция изображений с использованием коллекцииFS. Поскольку эти изображения должны быть доступны в автономном режиме, я разработал некоторую локальную синхронизацию, которая отслеживает сбор изображений, и когда какое-то изображение добавляется или изменяется, загружает изображение в локальное хранилище с использованием файловой системы cordova и filetransfer. Я отслеживаю загруженные изображения в клиентской коллекции.

При использовании изображения в шаблоне я проверяю, существует ли изображение локально. Если это так, я передаю локальный путь к файлу, иначе я передаю URL.

(android:http://meteor.local/:0) Not allowed to load local resource: file:///storage/emulated/0/brachot/AbsoluteBlackGepolijst.jpg 

Есть ли какая-то проблема для мобильного приложения Meteor для доступа к локальной файловой системе?

Вот некоторые из моих соответствующего кода:

Images.find().observe({ 
    added: function(doc){ 
     console.log('added: ' + doc.original.name); 
     var localImage = LocalImages.findOne(doc._id); 
     if (!localImage && window.fileSystem && window.fileSystem.root){ 
    // create filepath for new file 
    var dir = window.fileSystem.root.getDirectory("brachot", {create: true, exclusive: false}, function(dirEntry){ 
     var file = dirEntry.getFile(doc.original.name, {create: true, exclusive: false}, function(fileEntry){ 
     var filePath = fileEntry.toURL(); 

     // download the file to the filepath 
     var fileTransfer = new FileTransfer(); 
     console.log('starting file download: ' + doc.url() + ' to ' + filePath); 
     fileTransfer.download(
      doc.url(), 
      filePath, 
      function(){ 
      // download image and save locally 
      LocalImages.insert({ 
       _id: doc._id, 
       name: doc.original.name, 
       url: filePath 
      }); 
      console.log('save'); 
     }, 
     function(error){ 
      console.log('failed to save image: ' + filePath + ' (error: ' + error.http_status + ')'); 
     } 
     ); 
    }); 
    }, function(error){ 
     console.log(JSON.stringify(error)); 
}); 

Template.materials.helpers({ 
    imageUrl: function(){ 
     var image = LocalImages.findOne({name: this.image}); 
     if (!image) { 
      image = Images.findOne({'original.name': this.image}); 
      return image.url(); 
     } 
     else { 
      return image.url; 
     } 
    } 
}); 
+0

Проверьте этот вопрос [Github] (https://github.com/meteor/meteor/issues/3229), вкратце вам нужно запустить 'meteor -release cordova-41.0', потому что остальные 2 ребята не работают, но дайте ему попробовать – Ethaan

+1

Я пишу подобное приложение. Любой прогресс в доступе к локальной файловой системе? – Nate

ответ

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