electron如何自定义目录,修改文件名保存下载的网络文件

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

一、先看效果图


SSGBznPRCnGIUGSGnWLV0cug0rr5Ia1D3gxpOdfR.gif


二、安装使用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打开文件夹


fb9c46ad82594b40a0ef31819110e2a3_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


  • openDirectory  --允许选择文件夹



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


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


9f8ebe2225d840ebbcd3310e7bd53c6a_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


参数说明


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


整个代码如下


MH6xc5bg2088roma39b9cYJ1Sn1d8ZMGQiU3zl9o.png

相关文章
|
5月前
|
消息中间件 存储 Serverless
函数计算产品使用问题之怎么访问网络附加存储(NAS)存储模型文件
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
Docker 容器
docker中创建自定义网络
【10月更文挑战第7天】
87 6
|
3月前
|
安全 NoSQL Redis
Docker自定义网络
Docker自定义网络
49 11
|
3月前
|
Docker 容器
docker中自定义网络
【10月更文挑战第5天】
55 3
|
4月前
|
Shell Linux Docker
自定义Docker网络
这篇文章介绍了如何使用Docker命令自定义网络,并通过创建和配置网络来实现容器间的通信。
51 6
自定义Docker网络
|
5月前
|
Java
java网络编程 UDP通信协议实现局域网内文件的发送和接收
java网络编程 UDP通信协议实现局域网内文件的发送和接收
java网络编程 UDP通信协议实现局域网内文件的发送和接收
|
5月前
|
SQL 网络协议 安全
【Azure API 管理】APIM集成内网虚拟网络后,启用自定义路由管理外出流量经过防火墙(Firewall),遇见APIs加载不出来问题
【Azure API 管理】APIM集成内网虚拟网络后,启用自定义路由管理外出流量经过防火墙(Firewall),遇见APIs加载不出来问题
|
5月前
|
网络协议 微服务
【Azure 微服务】基于已经存在的虚拟网络(VNET)及子网创建新的Service Fabric并且为所有节点配置自定义DNS服务
【Azure 微服务】基于已经存在的虚拟网络(VNET)及子网创建新的Service Fabric并且为所有节点配置自定义DNS服务
|
5月前
|
Java 数据安全/隐私保护 Windows
Windows Service 服务中,不能访问挂载目录(网络映射盘)
Windows Service 服务中,不能访问挂载目录(网络映射盘)
151 0
|
29天前
|
人工智能 移动开发 JavaScript
如何用uniapp打包桌面客户端exe包,vue或者uni项目如何打包桌面客户端之electron开发-优雅草央千澈以开源蜻蜓AI工具为例子演示完整教程-开源代码附上
如何用uniapp打包桌面客户端exe包,vue或者uni项目如何打包桌面客户端之electron开发-优雅草央千澈以开源蜻蜓AI工具为例子演示完整教程-开源代码附上
142 18

热门文章

最新文章