美文网首页
Electron开发: Electron 文件下载

Electron开发: Electron 文件下载

作者: you的日常 | 来源:发表于2022-07-08 15:57 被阅读0次

文件下载是我们开发中比较常见的业务需求,比如:导出 excel。

web 应用文件下载存在一些局限性,通常是让后端将响应的头信息改成 Content-Disposition: attachment; filename=xxx.pdf,触发浏览器的下载行为。

在 electron 中的下载行为,都会触发 session 的 will-download 事件。在该事件里面可以获取到 downloadItem 对象,通过 downloadItem 对象实现一个简单的文件下载管理器:

image.png

1. 如何触发下载

由于 electron 是基于 chromium 实现的,通过调用 webContents 的 downloadURL 方法,相当于调用了 chromium 底层实现的下载,会忽略响应头信息,触发 will-download 事件。

// 触发下载
win.webContents.downloadURL(url)

// 监听 will-download
session.defaultSession.on('will-download', (event, item, webContents) => {})

2. 下载流程

image.png

3. 功能设计

实现一个简单的文件下载管理器功能包含:

  • 设置保存路径
  • 暂停/恢复和取消
  • 下载进度
  • 下载速度
  • 下载完成
  • 打开文件和打开文件所在位置
  • 文件图标
  • 下载记录

3.1 设置保存路径

如果没有设置保存路径,Electron 会自动弹出系统的保存对话框。不想使用系统的保存对话框,可以使用 setSavePath 方法,当有重名文件时,会直接覆盖下载。

item.setSavePath(path)

为了更好的用户体验,可以让用户自己选择保存位置操作。当点击位置输入框时,渲染进程通过 ipc 与主进程通信,打开系统文件选择对话框。

相关文章

网友评论

      本文标题:Electron开发: Electron 文件下载

      本文链接:https://www.haomeiwen.com/subject/saatertx.html