menu 山水有轻音
more_vert
electron如何自定义目录,修改文件名保存下载的网络文件
2020-12-08 | Electron | 暂无评论 | 34 次阅读 | 450字

一、先看效果图

二、安装使用store进行路径的存读取

1、为什么不使用window.localStorage

localStorage仅在浏览器进程(渲染进程)中起作用。
localStorage的容错性不是很高,因此,如果您的应用遇到错误并意外退出,则可能会丢失数据。
localStorage仅支持持久字符串。 此模块支持任何JSON支持的类型。
localStorage不是很安全,可能是由于xss攻击而泄漏信息。
electron-store模块的API更好。 您可以设置并获取嵌套属性。 您可以设置默认的初始配置。

2、关于vuex和storage的区别

vuex存储在内存,localstorage则以文件的方式存储在本地,electron-store数据存储卸载应用之后依然存在。
应用场景:vuex用于组件之间的传值,localstorage则主要用于不同页面之间的传值。
永久性:当刷新页面时vuex存储的值会丢失,localstorage不会。

注:很多同学觉得用localstorage可以代替vuex, 对于不变的数据确实可以,但是当两个组件共用一个数据源(对象或数组)时,如果其中一个组件改变了该数据源,希望另一个组件响应该变化时,localstorage无法做到,原因就是区别1。

3、安装electron-store

npm install electron-store

注:需要Electron 5或更高版本。如果安装失败,可以换成命令cnpm install electron-store(前提是安装了cnpm)

4、electron-store用法

const Store = require('electron-store');

const store = new Store();

store.set('unicorn', '🦄');
console.log(store.get('unicorn'));
//=> '🦄'

// 使用点表示法访问嵌套属性
store.set('foo.bar', true);
console.log(store.get('foo'));
//=> {bar: true}

store.delete('unicorn');
console.log(store.get('unicorn'));
//=> undefined

三、electron使用 dialog.showOpenDialog打开文件夹

  • openDirectory --允许选择文件夹
  • res.filePaths[0] --选择的文件夹路径
    详细配置请参考 https://www.electronjs.org/docs/api/dialog#dialogshowopendialogbrowserwindow-options

四、如何实现网络文件下载,并更改下载为文件名

可以使用fs.createWriteStream的方式,以文件流的形式保存文件

参数说明

  • url --要下载的文件网络地址
  • filename --文件名称
  • savepath -- 要保存的文件路径
  • callback --返回回调函数

整个代码如下

None
发表评论
暂无评论
textsms
account_circle
email
link