| 978 | |
| 979 | // 解析配置 |
| 980 | importFileJSON(ev) { |
| 981 | return new Promise((resolve, reject) => { |
| 982 | const fileDom = ev.target, |
| 983 | file = fileDom.files[0] |
| 984 | |
| 985 | // 格式判断 |
| 986 | if (file.type !== 'application/json') { |
| 987 | reject('仅允许上传json文件') |
| 988 | } |
| 989 | // 检验是否支持FileRender |
| 990 | if (typeof FileReader === 'undefined') { |
| 991 | reject('当前浏览器不支持FileReader') |
| 992 | } |
| 993 | |
| 994 | // 执行后清空input的值,防止下次选择同一个文件不会触发onchange事件 |
| 995 | ev.target.value = '' |
| 996 | |
| 997 | // 执行读取json数据操作 |
| 998 | const reader = new FileReader() |
| 999 | reader.readAsText(file) // 读取的结果还有其他读取方式,我认为text最为方便 |
| 1000 | |
| 1001 | reader.onerror = (err) => { |
| 1002 | reject('json文件解析失败', err) |
| 1003 | } |
| 1004 | |
| 1005 | reader.onload = () => { |
| 1006 | const resultData = reader.result |
| 1007 | if (resultData) { |
| 1008 | try { |
| 1009 | const importData = JSON.parse(resultData) |
| 1010 | resolve(importData) |
| 1011 | } catch (error) { |
| 1012 | reject('读取数据解析失败', error) |
| 1013 | } |
| 1014 | } else { |
| 1015 | reject('读取数据解析失败', error) |
| 1016 | } |
| 1017 | } |
| 1018 | }) |
| 1019 | }, |
| 1020 | |
| 1021 | // 保存配置到本地 |
| 1022 | file_read(e) { |