2016-02-29 3 views
7

Я работаю над приложением, которое в первом прогоне должно будет загружать файлы (изображения jpg/png) через API из Интернета, а затем хранить их локально, поэтому онлайн-соединение не будет (пользователь может запускать обновление в режиме онлайн и загружать новые данные через api, если будут доступны какие-либо обновления).Загрузите и храните файлы в электронном приложении

Я знаю, что очень необычно, как работает настольное приложение, но главная цель - синхронизировать данные настольных приложений с веб-приложением.

До сих пор я нашел плагин npm request (link), чтобы проверить, подключен ли пользователь к Интернету или нет.

Я не уверен, что можно загружать и хранить файлы внутри электронного приложения (так что это будет невидимо вне приложения)? Можете ли вы рекомендовать необходимые плагины/инструменты для достижения такой цели?

Любая помощь будет оценена по достоинству.

+0

Какие данные вы скачиваете? Я бы сказал, что это довольно необычно для приложений, чтобы сделать это так, как вы описали. Я предлагаю сохранить все загруженные данные в домашний каталог пользователя (например,/home/myuser/myapp в Linux). –

+0

Я обновил вопрос. Причина загрузки данных заключается в том, что данные динамически изменяются через веб-приложение, которое обрабатывает все данные, которые затем распространяются в другие веб-приложения и мобильные приложения. Теперь клиент хочет также настольную версию. – mrmnmly

ответ

6

Ну, вы можете использовать фрагмент от this answer и сделать это узлом.

var http = require('http'); 
var fs = require('fs'); 
var app = require('remote').require('app') 

var file = fs.createWriteStream(app.getDataPath() + "externalFiles/file.jpg"); 
var request = http.get("http://url-to-api/some-image.jpg", function(response) { 
    response.pipe(file); 
}); 

И вы можете использовать App Data Path для хранения файлов. Конечно, вам придется разбирать имя файла с URL-адреса, а затем вы готовы к работе.

Вы можете также использовать веб-содержимого

https://github.com/atom/electron/blob/master/docs/api/web-contents.md

Затем ваше приложение будет работать в браузере, и в автономном режиме поддержка должна быть добавлена ​​с помощью локального хранилища или некоторых других техников.

UPDATE:

Как сегодня есть несколько пакетов, которые могут помочь с этим, как этот один https://github.com/sindresorhus/electron-dl