diff --git a/elsrc/sync/tencent/UploadUtils.js b/elsrc/sync/tencent/UploadUtils.js
new file mode 100644
index 0000000..f20d464
--- /dev/null
+++ b/elsrc/sync/tencent/UploadUtils.js
@@ -0,0 +1,71 @@
+const COS = require('cos-nodejs-sdk-v5');
+const pathOpt = require("path");
+const cos = new COS({
+ SecretId: 'AKIDvjKhqrfEaliRq11nMcrGZmsATiyNl1BA',
+ // 推荐使用环境变量获取;用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。
+ // 子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
+ SecretKey: 'xpZCjCTVJzZG2wyy8mFVwLWTVVIqAKct',
+ Domain: 'https://note-1324909903.cos.ap-beijing.myqcloud.com'
+});
+const Bucket='note-1324909903'
+const Region = 'ap-beijing'
+class UploadUtils {
+ constructor(store) {
+ this.store = store;
+ }
+ syncActiveFile() {
+ let tableBarItem = JSON.parse(this.store.get("persist:tableBarItem"));
+ if (!tableBarItem) {
+ return;
+ }
+ let activeFile = tableBarItem.activeKey?tableBarItem.activeKey.replaceAll('"',""):undefined;
+ console.log("activeFile:", activeFile)
+ if (activeFile) {
+ cos.headObject({
+ Bucket:Bucket,
+ Region:Region,
+ // 不能以 / 开头
+ Key: activeFile,
+ }, function(err, data) {
+ console.log("err || data.CommonPrefixes",err || data);
+ if (data&&data.ETag){
+ // 文件存在,比较MD5值
+ let md5= data.ETag.replaceAll('"',"")
+ console.log("fileList[0].ETag",md5)
+ }else {
+ console.log("cos.uploadFile")
+ cos.uploadFile({
+ Bucket: Bucket, /* 填入您自己的存储桶,必须字段 */
+ Region: Region, /* 存储桶所在地域,例如 ap-beijing,必须字段 */
+ Key: activeFile, /* 存储在桶里的对象键(例如1.jpg,a/b/test.txt),必须字段 */
+ FilePath: activeFile, /* 必须 */
+ SliceSize: 1024 * 1024 * 5, /* 触发分块上传的阈值,超过5MB使用分块上传,非必须 */
+ onTaskReady: function (taskId) { /* 非必须 */
+ console.log(taskId);
+ },
+ onProgress: function (progressData) { /* 非必须 */
+ console.log(JSON.stringify(progressData));
+ },
+ onFileFinish: function (err, data, options) { /* 非必须 */
+ console.log(options.Key + '上传' + (err ? '失败' : '完成'));
+ },
+ // 支持自定义headers 非必须
+ }, function (err, data) {
+ console.log(err || data);
+ });
+ }
+ });
+ }
+
+ }
+
+ syncFile() {
+ console.log("同步数据")
+ // 1. 先同步active文件数据
+ this.syncActiveFile()
+ // 2. 同步bar中数据
+ // 3. 同步树中的数据。
+ }
+}
+
+module.exports = UploadUtils
diff --git a/main.js b/main.js
index 33e9176..d70dfb7 100644
--- a/main.js
+++ b/main.js
@@ -1,6 +1,7 @@
const {app, Menu, BrowserWindow,ipcMain,dialog} = require('electron')
const path = require('path')
const {menuRebuild} = require('./elsrc/TopMenu.js')
+const UploadUtils = require("./elsrc/sync/tencent/UploadUtils")
const Store = require('electron-store');
const store = new Store();
const isDev = require('electron-is-dev')
@@ -65,11 +66,10 @@ app.whenReady().then(() => {
// 点击托盘图标时通常会重新创建一个新窗口
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) createWindow()
+ // 同步数据
})
- // ipcMain.on("redirectUrlTo",(event,value)=>
- // browserWindow.webContents.send('redirectUrl', value)
- // )
-
+ const uploadUtil = new UploadUtils(store);
+ uploadUtil.syncFile()
ipcMain.handle("saveFileWithName",(listen,args)=>{
console.log("saveFileWithName")
return dialog.showSaveDialog({"title":"保存文件",})
@@ -83,7 +83,7 @@ app.whenReady().then(() => {
return store.set(key,value)
})
ipcMain.handle("electronStoreGet",(listen,args)=>{
- console.log("electronStoreGet:",store.get(args))
+ console.log("electronStoreGet:",args)
return store.get(args)
})
ipcMain.handle("electronStoreDelete",(listen,args)=>{
diff --git a/package-lock.json b/package-lock.json
index bc6b249..bbac088 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,6 +9,7 @@
"version": "1.0.0",
"license": "MIT",
"dependencies": {
+ "cos-nodejs-sdk-v5": "^2.13.3",
"electron-is-dev": "^1.1.0",
"electron-squirrel-startup": "^1.0.0",
"electron-store": "^8.1.0",
@@ -9503,6 +9504,98 @@
"resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
},
+ "node_modules/cos-nodejs-sdk-v5": {
+ "version": "2.13.3",
+ "resolved": "https://registry.npmmirror.com/cos-nodejs-sdk-v5/-/cos-nodejs-sdk-v5-2.13.3.tgz",
+ "integrity": "sha512-hcgZ9UScbtl1CdgtXHpnDcCFeiRO7rE/eK0/Mk29/aIXTWZvhY1qFZDw1rwNtkZ2QD12ZzqINsXJQjaak4Tm/g==",
+ "dependencies": {
+ "conf": "^9.0.0",
+ "fast-xml-parser": "4.2.5",
+ "mime-types": "^2.1.24",
+ "request": "^2.88.2"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/cos-nodejs-sdk-v5/node_modules/ajv": {
+ "version": "7.2.4",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-7.2.4.tgz",
+ "integrity": "sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "node_modules/cos-nodejs-sdk-v5/node_modules/ajv-formats": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-1.6.1.tgz",
+ "integrity": "sha512-4CjkH20If1lhR5CGtqkrVg3bbOtFEG80X9v6jDOIUhbzzbB+UzPBGy8GQhUNVZ0yvMHdMpawCOcy5ydGMsagGQ==",
+ "dependencies": {
+ "ajv": "^7.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^7.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/cos-nodejs-sdk-v5/node_modules/conf": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmmirror.com/conf/-/conf-9.0.2.tgz",
+ "integrity": "sha512-rLSiilO85qHgaTBIIHQpsv8z+NnVfZq3cKuYNCXN1AOqPzced0GWZEe/A517VldRLyQYXUMyV+vszavE2jSAqw==",
+ "dependencies": {
+ "ajv": "^7.0.3",
+ "ajv-formats": "^1.5.1",
+ "atomically": "^1.7.0",
+ "debounce-fn": "^4.0.0",
+ "dot-prop": "^6.0.1",
+ "env-paths": "^2.2.0",
+ "json-schema-typed": "^7.0.3",
+ "make-dir": "^3.1.0",
+ "onetime": "^5.1.2",
+ "pkg-up": "^3.1.0",
+ "semver": "^7.3.4"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cos-nodejs-sdk-v5/node_modules/conf/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cos-nodejs-sdk-v5/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node_modules/cos-nodejs-sdk-v5/node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/cosmiconfig": {
"version": "7.1.0",
"resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
@@ -12633,6 +12726,17 @@
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"dev": true
},
+ "node_modules/fast-xml-parser": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmmirror.com/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz",
+ "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==",
+ "dependencies": {
+ "strnum": "^1.0.5"
+ },
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ }
+ },
"node_modules/fastq": {
"version": "1.15.0",
"resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz",
@@ -23612,7 +23716,6 @@
"version": "6.3.0",
"resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
"bin": {
"semver": "bin/semver.js"
}
@@ -24536,6 +24639,11 @@
"node": ">=0.8.0"
}
},
+ "node_modules/strnum": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
+ },
"node_modules/style-loader": {
"version": "3.3.4",
"resolved": "https://registry.npmmirror.com/style-loader/-/style-loader-3.3.4.tgz",
diff --git a/package.json b/package.json
index 0c93c74..b0e5704 100644
--- a/package.json
+++ b/package.json
@@ -52,6 +52,7 @@
"make": "electron-forge make"
},
"dependencies": {
+ "cos-nodejs-sdk-v5": "^2.13.3",
"electron-is-dev": "^1.1.0",
"electron-squirrel-startup": "^1.0.0",
"electron-store": "^8.1.0",
diff --git a/src/App.js b/src/App.js
index c088133..62c0acb 100644
--- a/src/App.js
+++ b/src/App.js
@@ -33,7 +33,8 @@ function App() {
return (
<>
{/* 注册路由 */}
- {element}