feat:文件上传下载添加提示
This commit is contained in:
parent
a598619e0a
commit
68b831e155
|
@ -1,7 +1,8 @@
|
||||||
const COS = require('cos-nodejs-sdk-v5');
|
const COS = require('cos-nodejs-sdk-v5');
|
||||||
const {dialog} = require('electron')
|
const {dialog} = require('electron')
|
||||||
const {readFileSync}=require('node:fs')
|
const {readFileSync} = require('node:fs')
|
||||||
const md5 = require("md5");
|
const md5 = require("md5");
|
||||||
|
|
||||||
class UploadUtils {
|
class UploadUtils {
|
||||||
|
|
||||||
static cos = new COS({
|
static cos = new COS({
|
||||||
|
@ -11,17 +12,93 @@ class UploadUtils {
|
||||||
SecretKey: 'xpZCjCTVJzZG2wyy8mFVwLWTVVIqAKct',
|
SecretKey: 'xpZCjCTVJzZG2wyy8mFVwLWTVVIqAKct',
|
||||||
Domain: 'https://note-1324909903.cos.ap-beijing.myqcloud.com'
|
Domain: 'https://note-1324909903.cos.ap-beijing.myqcloud.com'
|
||||||
});
|
});
|
||||||
static Bucket='note-1324909903'
|
static Bucket = 'note-1324909903'
|
||||||
static Region = 'ap-beijing'
|
static Region = 'ap-beijing'
|
||||||
|
|
||||||
constructor(store) {
|
constructor(store) {
|
||||||
this.store = store;
|
this.store = store;
|
||||||
}
|
}
|
||||||
|
getActiveFile() {
|
||||||
|
let tableBarItem = JSON.parse(this.store.get("persist:tableBarItem"));
|
||||||
|
if (!tableBarItem) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return tableBarItem.activeKey ? tableBarItem.activeKey.replaceAll('"', "") : undefined;
|
||||||
|
}
|
||||||
|
|
||||||
upLoadFileUtil(activeFile){UploadUtils.selfUploadFile(activeFile)}
|
/*
|
||||||
downLoadFileUtil(activeFile){UploadUtils.selfDownLoadFile(activeFile)}
|
* 检测本地和远程文件是否相同
|
||||||
|
*/
|
||||||
|
getLocalFileMd5(activeFile) {
|
||||||
|
let dirMessage = JSON.parse(this.store.get("persist:dirMessage"));
|
||||||
|
let fileMd5
|
||||||
|
if (activeFile && dirMessage && dirMessage.data) {
|
||||||
|
console.log("dirMessage.data", JSON.parse(dirMessage.data, []))
|
||||||
|
let find = JSON.parse(dirMessage.data, []).find(file => file.fileId === activeFile || file.filePath === activeFile);
|
||||||
|
if (find) {
|
||||||
|
fileMd5 = find.fileMd5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!fileMd5) {
|
||||||
|
fileMd5 = md5(readFileSync(activeFile).toString())
|
||||||
|
}
|
||||||
|
return fileMd5
|
||||||
|
}
|
||||||
|
|
||||||
static selfUploadFile(activeFile){
|
|
||||||
|
upLoadFileUtil(activeFile) {
|
||||||
|
// 判断文件是否相同
|
||||||
|
let fileMd5 = this.getLocalFileMd5(activeFile);
|
||||||
|
UploadUtils.cos.headObject({
|
||||||
|
Bucket: UploadUtils.Bucket,
|
||||||
|
Region: UploadUtils.Region,
|
||||||
|
// 不能以 / 开头
|
||||||
|
Key: activeFile,
|
||||||
|
}, function (err, data) {
|
||||||
|
if (data && data.ETag) {
|
||||||
|
// 文件存在,比较MD5值
|
||||||
|
let onlineMd5 = data.ETag.replaceAll('"', "")
|
||||||
|
if (onlineMd5 === fileMd5) {
|
||||||
|
dialog.showMessageBoxSync({
|
||||||
|
"message": "云文件和本地相同无需同步",
|
||||||
|
"type": "info",
|
||||||
|
"buttons": ["确认"],
|
||||||
|
"defaultId": 0
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
UploadUtils.selfUploadFile(activeFile)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
downLoadFileUtil(activeFile) {
|
||||||
|
// 判断文件是否相同
|
||||||
|
let fileMd5 = this.getLocalFileMd5(activeFile);
|
||||||
|
UploadUtils.cos.headObject({
|
||||||
|
Bucket: UploadUtils.Bucket,
|
||||||
|
Region: UploadUtils.Region,
|
||||||
|
// 不能以 / 开头
|
||||||
|
Key: activeFile,
|
||||||
|
}, function (err, data) {
|
||||||
|
if (data && data.ETag) {
|
||||||
|
// 文件存在,比较MD5值
|
||||||
|
let onlineMd5 = data.ETag.replaceAll('"', "")
|
||||||
|
if (onlineMd5 === fileMd5) {
|
||||||
|
dialog.showMessageBoxSync({
|
||||||
|
"message": "云文件和本地相同无需同步",
|
||||||
|
"type": "info",
|
||||||
|
"buttons": ["确认"],
|
||||||
|
"defaultId": 0
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
UploadUtils.selfDownLoadFile(activeFile)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
static selfUploadFile(activeFile) {
|
||||||
console.log("cos.uploadFile")
|
console.log("cos.uploadFile")
|
||||||
UploadUtils.cos.uploadFile({
|
UploadUtils.cos.uploadFile({
|
||||||
Bucket: UploadUtils.Bucket, /* 填入您自己的存储桶,必须字段 */
|
Bucket: UploadUtils.Bucket, /* 填入您自己的存储桶,必须字段 */
|
||||||
|
@ -37,15 +114,31 @@ class UploadUtils {
|
||||||
},
|
},
|
||||||
onFileFinish: function (err, data, options) { /* 非必须 */
|
onFileFinish: function (err, data, options) { /* 非必须 */
|
||||||
console.log(options.Key + '上传' + (err ? '失败' : '完成'));
|
console.log(options.Key + '上传' + (err ? '失败' : '完成'));
|
||||||
|
if (err){
|
||||||
|
dialog.showMessageBoxSync({
|
||||||
|
"message": err,
|
||||||
|
"type": "error",
|
||||||
|
"buttons": ["确认"],
|
||||||
|
"defaultId": 0
|
||||||
|
})
|
||||||
|
}else {
|
||||||
|
dialog.showMessageBoxSync({
|
||||||
|
"message": "同步完成",
|
||||||
|
"type": "info",
|
||||||
|
"buttons": ["确认"],
|
||||||
|
"defaultId": 0
|
||||||
|
})
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// 支持自定义headers 非必须
|
// 支持自定义headers 非必须
|
||||||
}, function (err, data) {
|
}, function (err, data) {
|
||||||
console.log(err || data);
|
console.log(err || data);
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
static selfDownLoadFile(activeFile){
|
static selfDownLoadFile(activeFile) {
|
||||||
console.log("cos.downloadFile",activeFile)
|
console.log("cos.downloadFile", activeFile)
|
||||||
UploadUtils.cos.getObject({
|
UploadUtils.cos.getObject({
|
||||||
Bucket: UploadUtils.Bucket, /* 填入您自己的存储桶,必须字段 */
|
Bucket: UploadUtils.Bucket, /* 填入您自己的存储桶,必须字段 */
|
||||||
Region: UploadUtils.Region, /* 存储桶所在地域,例如 ap-beijing,必须字段 */
|
Region: UploadUtils.Region, /* 存储桶所在地域,例如 ap-beijing,必须字段 */
|
||||||
|
@ -54,66 +147,62 @@ class UploadUtils {
|
||||||
// 支持自定义headers 非必须
|
// 支持自定义headers 非必须
|
||||||
}, function (err, data) {
|
}, function (err, data) {
|
||||||
console.log(err || data);
|
console.log(err || data);
|
||||||
|
if (err){
|
||||||
|
dialog.showMessageBoxSync({
|
||||||
|
"message": err,
|
||||||
|
"type": "error",
|
||||||
|
"buttons": ["确认"],
|
||||||
|
"defaultId": 0
|
||||||
|
})
|
||||||
|
}else {
|
||||||
|
dialog.showMessageBoxSync({
|
||||||
|
"message": "同步完成",
|
||||||
|
"type": "info",
|
||||||
|
"buttons": ["确认"],
|
||||||
|
"defaultId": 0
|
||||||
|
})
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getActiveFile(){
|
|
||||||
let tableBarItem = JSON.parse(this.store.get("persist:tableBarItem"));
|
|
||||||
if (!tableBarItem) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
return tableBarItem.activeKey?tableBarItem.activeKey.replaceAll('"',""):undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
syncActiveFile() {
|
syncActiveFile() {
|
||||||
let activeFile = this.getActiveFile();
|
let activeFile = this.getActiveFile();
|
||||||
console.log("activeFile:", activeFile)
|
console.log("activeFile:", activeFile)
|
||||||
if (activeFile) {
|
if (activeFile) {
|
||||||
let dirMessage = JSON.parse(this.store.get("persist:dirMessage"));
|
let fileMd5 = this.getLocalFileMd5(activeFile);
|
||||||
UploadUtils.cos.headObject({
|
UploadUtils.cos.headObject({
|
||||||
Bucket:UploadUtils.Bucket,
|
Bucket: UploadUtils.Bucket,
|
||||||
Region:UploadUtils.Region,
|
Region: UploadUtils.Region,
|
||||||
// 不能以 / 开头
|
// 不能以 / 开头
|
||||||
Key: activeFile,
|
Key: activeFile,
|
||||||
}, function(err, data) {
|
}, function (err, data) {
|
||||||
console.log("err || data.CommonPrefixes"+activeFile,err || data);
|
console.log("err || data.CommonPrefixes" + activeFile, err || data);
|
||||||
if (data&&data.ETag){
|
if (data && data.ETag) {
|
||||||
// 文件存在,比较MD5值
|
// 文件存在,比较MD5值
|
||||||
let onlineMd5= data.ETag.replaceAll('"',"")
|
let onlineMd5 = data.ETag.replaceAll('"', "")
|
||||||
let fileMd5
|
if (onlineMd5 === fileMd5) {
|
||||||
if (dirMessage&&dirMessage.data) {
|
|
||||||
console.log("dirMessage.data",JSON.parse(dirMessage.data,[]))
|
|
||||||
let find = JSON.parse(dirMessage.data,[]).find(file=>file.fileId===activeFile||file.filePath===activeFile);
|
|
||||||
if (find){
|
|
||||||
fileMd5= find.fileMd5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!fileMd5){
|
|
||||||
fileMd5=md5(readFileSync(activeFile).toString())
|
|
||||||
}
|
|
||||||
if (onlineMd5===fileMd5){
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
console.log("fileList[0].ETag",onlineMd5)
|
console.log("fileList[0].ETag", onlineMd5)
|
||||||
let number = dialog.showMessageBoxSync({
|
let number = dialog.showMessageBoxSync({
|
||||||
"message":"云文件已修改是否同步到本地",
|
"message": "云文件已修改是否同步到本地",
|
||||||
"type":"info",
|
"type": "info",
|
||||||
"buttons":["是","否"],
|
"buttons": ["是", "否"],
|
||||||
"defaultId":0
|
"defaultId": 0
|
||||||
});
|
});
|
||||||
if (number===0){
|
if (number === 0) {
|
||||||
UploadUtils.selfDownLoadFile(activeFile)
|
UploadUtils.selfDownLoadFile(activeFile)
|
||||||
}else if(number===1){
|
} else if (number === 1) {
|
||||||
if (dialog.showMessageBoxSync({
|
if (dialog.showMessageBoxSync({
|
||||||
"message":"是否使用本地文件覆盖远程文件",
|
"message": "是否使用本地文件覆盖远程文件",
|
||||||
"type":"info",
|
"type": "info",
|
||||||
"buttons":["是","否"],
|
"buttons": ["是", "否"],
|
||||||
"defaultId":0
|
"defaultId": 0
|
||||||
})===0){
|
}) === 0) {
|
||||||
UploadUtils.selfUploadFile(activeFile)
|
UploadUtils.selfUploadFile(activeFile)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
UploadUtils.selfUploadFile(activeFile)
|
UploadUtils.selfUploadFile(activeFile)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue