在电子应用程序中下载和存储文件

luk*_*ups 9 javascript desktop-application node.js npm electron

我正在开发一个应用程序,在第一次运行时必须通过API从网上下载文件(图像jpg/png),然后将其存储在本地,这样就不再需要在线连接(用户可以在线时运行更新)如果有可用的更新,请通过api下载更新的数据.

我知道桌面应用程序的工作方式非常罕见,但主要目标是将桌面应用程序数据与Web应用程序同步.

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

我不确定是否可以在电子应用程序中下载和存储文件(因此它在应用程序外部是不可见的)?你能推荐必要的插件/工具来实现这个目标吗?

任何帮助将不胜感激.

lim*_*gni 12

好吧,您可以使用此答案中的代码段并以节点方式执行操作.

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);
});
Run Code Online (Sandbox Code Playgroud)

你可以使用它App Data Path来存储文件.当然,您必须从URL解析文件的名称,然后您就可以开始了.

您也可以使用网页内容

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

然后您的应用程序将作为浏览器工作,并且必须使用本地存储或其他一些技术添加脱机支持.

更新:

今天有几个软件包可以帮助解决这个问题,如https://github.com/sindresorhus/electron-dl

  • 这些看起来像是额外的教程和方法:https://damieng.com/blog/2017/03/10/downloading-files-with-progress-in-electron,https://ourcodeworld.com/articles/read/228/如何下载网络文件与电子保存并显示下载进度 (2认同)