2016-02-29 138 views
7

我工作的一个应用程序,在第一次运行会通过API从网上下载文件(图片JPG/PNG),然后本地存储它使网络连接不会(如果有更新可用,用户可以在线运行更新并通过api下载更新的数据)。下载和存储文件

我知道这是最主要的目标是怎样的桌面应用程序的作品,但在桌面应用程序的数据与Web应用程序同步非常少见的方式。

到目前为止,我已经找到一个npm插件requestlink)来检查用户是否连接到互联网。

我不知道是否有可能下载和电子应用中存储文件(所以这将是应用程序外部不可见)?你能推荐必要的插件/工具来达到这样的目标吗?

任何帮助将不胜感激。

+0

什么样的数据,你下载?我想说的是,应用程序按照您所描述的方式进行操作是非常不寻常的。我建议将所有下载的数据保存到用户的主目录(例如Linux中的/ home/myuser/myapp)。 –

+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