Electron(2) - 下载与解压缩
1.下载文件
- 主线程中调用下载
win.webContents.downloadURL(url)
- 监听下载事件
//监听下载动作
win.webContents.session.on('will-download', (event, item, webContents) => {
//拼接要存储的路径
var zipFile = path.join(app.getAppPath(), 'static', item.getFilename())
//设置存储路径 否则会弹出对话框
item.setSavePath(zipFile)
//监听下载过程
item.on('updated', (event, state) => {
//下载意外中断,可以恢复
if (state === 'interrupted') {
console.log('Download is interrupted but can be resumed')
} else if (state === 'progressing') {
//下载正在进行中
if (item.isPaused()) {
//下载暂停中
console.log('Download is paused')
} else {
//下载进行中
console.log(`complete:${(item.getReceivedBytes() / item.getTotalBytes() * 100).toFixed(2)}%`)
//任务栏进度条 -1不展示
win.setProgressBar(item.getReceivedBytes() / item.getTotalBytes())
}
}
})
//监听完成
item.once('done', (event, state) => {
})
})
2.zip解压缩
- 安装第三方解压缩模块 node-unzip-2
npm i node-unzip-2
- 核心代码
//引入 path 模块
const path = require('path')
//引入文件操作模块
var fs = require('fs')
//引入unzip模块
var unzip = require("node-unzip-2")
//解压目标目录
var zipTargetPath = path.join(app.getAppPath(),'static')
//解压文件路径
var zipFile = path.join(app.getAppPath(),'static','test.zip')
console.log('解压目标目录',zipTargetPath)
console.log('解压文件路径',zipFile)
fs.createReadStream(zipFile).pipe(unzip.Extract({ path: zipTargetPath })) //解压时直接会覆盖重名文件
3.关于下载进度条
- electron自带任务栏的下载进度条,适用于后台下载文件
- 如果想把下载进度渲染至页面中,需要用到进程通信,及:主线程发送下载进度,然后渲染线程preload.js中进行监听,然后在preload.js进行页面操作
- preload.js可直接操作Dom,渲染进度条问题不大
- 如果你的网页是独立的且使用vue进行渲染,此种情况无法操作vue的实例,需要手动操作dom
Electron(2) - 下载与解压缩的更多相关文章
- 解决 Electron 包下载太慢问题
项目下新建 .npmrc 文件,加入如下配置: electron_mirror=https://npm.taobao.org/mirrors/electron/ 即使用淘宝的源,重新 npm inst ...
- Electron的环境配置
原文地址http://huisky.com/blog/161218121551123 本文介绍了Electron的环境配置,包括Electron下载.nodejs下载安装.NPM+Bower安装配置. ...
- 教你把UltraEdit如何注册激活教程及UltraEdit 22.0.0.48 官方中文版下载
UltraEdit 22.0.0.48 官方中文版下载:链接: http://pan.baidu.com/s/1i3f7mZV 密码: r23v2015-5-30号更新 第一.关闭网络连接(或者直接拔 ...
- [转载]AxureRP 7超强部件库下载
很多刚刚开始学习Axure的朋友都喜欢到网上搜罗各种部件库(组件库)widgets library ,但是网络中真正实用的并且适合你使用的少之又少,最好的办法就是自己制作适合自己工作内容的部件库. 这 ...
- Python各种模块下载及安装配置
方式1 在Python官网https://www.python.org/或者是github搜索进行下载 ,解压缩之后通过命令提示符进入已经解压缩文件夹根目录,输入下面的命令: python setup ...
- Mac使用rz、sz远程上传下载文件
习惯了 在windows下的securecrt和xshell的rz 和sz. rz 可以很方便的从客户端传文件到服务器,sz也可以很方便的从服务器传文件到客户端,就算中间隔着跳板机也不影响.在mac下 ...
- postman下载和安装
插件下载地址:http://download.csdn.net/download/zhanghaofor/8244137 下载后解压缩,里面有安装方法 1.找到后缀为crx的文件,将后缀改成rar并解 ...
- 电子地图/卫星地图下载并转存为jpg图片
1.下载水经注万能地图下载器破解版 http://download.csdn.net/download/hyb2012/8714725,此软件为绿色免安装且免注册 2.下载后解压缩后,运行sgwn.e ...
- wkhtmltopdf+itext实现html生成pdf文件的打印下载(适用于linux及windows)
目中遇到个根据html转Java的功能,在java中我们itext可以快速的实现pdf打印下载的功能,在itext中我们一般有以下三中方式实现 配置pdf模板,通过Adobe Acrobat 来设置域 ...
- electron快速开始
初学electron 接触了两周的electron,感觉还不错,以后pc端基本上可以用electron加壳写pc端应用了,可以用nodejs的模块,也可以用es6.7,还可以直接操作系统文件.基本上可 ...
随机推荐
- C# – Record, Class, Struct
前言 之前在 C# – 10.0 已经有介绍过 Record 了. 但之前还没怎么用到, 最近有用到了, 所以特别写多一篇. Class vs Struct 参考: C#详解struct和class的 ...
- Figma 学习笔记 – Align 对齐
Figma 有几个常用的对齐方法 从左到右 1. 左对齐 Alt + A 2.左右居中对齐 Alt + H 3.右对齐 Alt + D 4.上对齐 Alt + W 5.上下居中对齐 Alt + V 6 ...
- 加快 hdfs block 块复制的参数调整
共涉及三个参数: dfs.namenode.replication.max-streams 30 => 70 dfs.namenode.replication.max-streams-hard- ...
- Response状态码
1.数据是否正常 2.文件是否存在 3.地址自动跳转 4.服务提供错误 注:容错处理识别 •-1xx:指示信息-表示请求已接收,继续处理. •-2xx:成功-表示请求已经被成功接收.理解.接受. •- ...
- thinkphp在原字段上面进行加减操作
经常有需要对某个数据表的计数字段进行加减操作,我们来看下在ThinkPHP中的具体使用办法. 最简单的,使用下面方法对score自加,第二个参数也可以不要,默认加1: M('User')-> ...
- /proc/pids/io
rchar:代表自进程启动以来所读取的总字符数,包括通过缓存或直接读取的字符.单位是字节(bytes). wchar:代表自进程启动以来所写入的总字符数,包括通过缓存或直接写入的字符.单位是字节(by ...
- iOS动画之CABasicAnimation的使用方法(移动,旋转,缩放)
设定动画CABasicAnimation的属性和说明 属性 说明 duration 动画的时间 repeatCount 重复的次数.不停重复设置为 HUGE_VALF repeatDuration ...
- element输入天数,获取当前时间加上天数 【时间获取】
handleInput (val) { // console.log(this.formModel.ITEM_PM) if (!(/[^\d]/g).test(val)) { // console.l ...
- 洛谷P1381单词背诵
单词背诵 题目描述 灵梦有 \(n\) 个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由 \(m\) 个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只算一 ...
- fatal: couldn't find remote ref XXX解决
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...