2016-02-29 24 views
7

Pracuję nad aplikacją, która w pierwszym uruchomieniu będzie musiała pobrać pliki (obrazy jpg/png) za pośrednictwem interfejsu API z Internetu, a następnie przechowywać je lokalnie, aby połączenie internetowe nie było dostępne. konieczne (użytkownik może uruchamiać aktualizację w trybie online i pobierać nowsze dane za pośrednictwem interfejsu API, jeśli będą dostępne aktualizacje).Pobierz i przechowuj pliki wewnątrz aplikacji elektronowej

Mam świadomość, że to bardzo nietypowy sposób działania aplikacji komputerowej, ale głównym celem jest synchronizacja danych aplikacji komputerowej z aplikacją internetową.

Do tej pory znalazłem wtyczkę npm request (link), aby sprawdzić, czy użytkownik jest podłączony do Internetu, czy nie.

Nie jestem pewien, czy można pobierać i przechowywać pliki wewnątrz aplikacji elektronowej (dzięki czemu będzie on niewidoczny poza aplikacją)? Czy możesz polecić niezbędne wtyczki/narzędzia do osiągnięcia tego celu?

Każda pomoc zostanie doceniona.

+0

Jakie dane są pobraniu? Powiedziałbym, że jest to dość niezwykłe, gdy aplikacje robią to w sposób opisany przez Ciebie. Proponuję zapisać wszystkie pobrane dane do katalogu domowego użytkownika (np./Home/myuser/myapp w systemie Linux). –

+0

Zaktualizowałem pytanie. Powodem pobierania danych jest to, że dane zmieniają się dynamicznie za pomocą aplikacji internetowej, która obsługuje wszystkie dane, które następnie są dystrybuowane do innych aplikacji internetowych i mobilnych. Teraz klient chce również wersję na komputery. – mrmnmly

Odpowiedz

6

Cóż, możesz użyć fragmentu kodu z this answer i zrobić to w sposób węzłowy.

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); 
}); 

I można użyć App Data Path do przechowywania plików. Oczywiście, musisz przeanalizować nazwę pliku z adresu URL, a następnie jesteś gotowy do pracy.

Można również użyć treści internetowych

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

Następnie aplikacja będzie pracować jako przeglądarki, jak i offline wsparcie musiałaby być dodawane za pomocą pamięci lokalnej lub innej techniki.

UPDATE:

jak dzisiaj istnieje kilka pakietów, które mogą w tym pomóc jak ten jeden https://github.com/sindresorhus/electron-dl