feat:文件上传下载添加提示
This commit is contained in:
parent
a598619e0a
commit
68b831e155
|
@ -2,6 +2,7 @@ const COS = require('cos-nodejs-sdk-v5');
|
|||
const {dialog} = require('electron')
|
||||
const {readFileSync} = require('node:fs')
|
||||
const md5 = require("md5");
|
||||
|
||||
class UploadUtils {
|
||||
|
||||
static cos = new COS({
|
||||
|
@ -17,9 +18,85 @@ class UploadUtils {
|
|||
constructor(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
|
||||
}
|
||||
|
||||
|
||||
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")
|
||||
|
@ -37,10 +114,26 @@ class UploadUtils {
|
|||
},
|
||||
onFileFinish: function (err, data, options) { /* 非必须 */
|
||||
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 非必须
|
||||
}, function (err, data) {
|
||||
console.log(err || data);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -54,22 +147,29 @@ class UploadUtils {
|
|||
// 支持自定义headers 非必须
|
||||
}, function (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() {
|
||||
let activeFile = this.getActiveFile();
|
||||
console.log("activeFile:", activeFile)
|
||||
if (activeFile) {
|
||||
let dirMessage = JSON.parse(this.store.get("persist:dirMessage"));
|
||||
let fileMd5 = this.getLocalFileMd5(activeFile);
|
||||
UploadUtils.cos.headObject({
|
||||
Bucket: UploadUtils.Bucket,
|
||||
Region: UploadUtils.Region,
|
||||
|
@ -80,17 +180,6 @@ class UploadUtils {
|
|||
if (data && data.ETag) {
|
||||
// 文件存在,比较MD5值
|
||||
let onlineMd5 = data.ETag.replaceAll('"', "")
|
||||
let 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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue