一直在写底层的功能,近期需要开发打开文件和文件另存为的接口提供给UI层使用,于是把踩到的坑总结一下;
先实现打开文件的功能
源码实现如下:
需要指定文件保存的地址,注意:这里使用的是全局的绝对路径,并且是用c://盘符开头的,path.resolve(__dirname, "../../../static/files/")
1. 首先先通过node的底层fs模块exists方法去判断当前路径下是否存在此文件名的文件,如果存在则直接通过electron的shell模块打开,方法名:
shell.openItem(files + '/' + formData.fileRealName);
因为files是带盘符的全局路径,所以拼上文件的后缀名的时候需要加上'/'的符号
2. 如果当前文件夹下并没有保存过此文件,那么需要先将文件写入本地,通过fs模块写入,方法:writeFile
写入成功后直接在回调中在通过shell方法打开文件
实现文件另存为功能
实现方式和文件打开有一个区别就是需要去打开另存文件窗口,这个需要通过electron方法去实现:
title就是要弹窗的标题
defaultPath是弹窗的默认文件名,(可以修改)
filters是文件的默认格式,可以自行设置
第二个参数是一个回调参数,通过回调参数可以获取到当前文件路径(带文件名的),拿到此参数就可以进行后面的写入文件操作了,还是一样使用writeFile;