From d81d8f7c5d61b85d2672a3f85116324bf4b13a3c Mon Sep 17 00:00:00 2001 From: CJK_mkp <113243675+CJKmkp@users.noreply.github.com> Date: Sat, 8 Nov 2025 21:01:50 +0800 Subject: [PATCH] =?UTF-8?q?improve:Dlass=E8=81=94=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/Helpers/DlassNoteUploader.cs | 44 +++++++++++++------ .../MainWindow_cs/MW_Save&OpenStrokes.cs | 18 ++++++++ 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/Ink Canvas/Helpers/DlassNoteUploader.cs b/Ink Canvas/Helpers/DlassNoteUploader.cs index 4265c2bc..04f7a8b6 100644 --- a/Ink Canvas/Helpers/DlassNoteUploader.cs +++ b/Ink Canvas/Helpers/DlassNoteUploader.cs @@ -100,9 +100,9 @@ namespace Ink_Canvas.Helpers } /// - /// 异步上传笔记文件到Dlass(支持PNG和ICSTK格式) + /// 异步上传笔记文件到Dlass(支持PNG、ICSTK和ZIP格式) /// - /// 文件路径(支持PNG和ICSTK) + /// 文件路径(支持PNG、ICSTK和ZIP) /// 是否成功加入队列(不等待实际上传完成) public static async Task UploadNoteFileAsync(string filePath) { @@ -122,15 +122,16 @@ namespace Ink_Canvas.Helpers } var fileExtension = Path.GetExtension(filePath).ToLower(); - if (fileExtension != ".png" && fileExtension != ".icstk") + if (fileExtension != ".png" && fileExtension != ".icstk" && fileExtension != ".zip") { return false; } var fileInfo = new FileInfo(filePath); - if (fileInfo.Length > 10 * 1024 * 1024) + long maxSize = fileExtension == ".zip" ? 50 * 1024 * 1024 : 10 * 1024 * 1024; + if (fileInfo.Length > maxSize) { - LogHelper.WriteLogToFile($"上传失败:文件过大({fileInfo.Length / 1024 / 1024}MB),超过10MB限制", LogHelper.LogType.Error); + LogHelper.WriteLogToFile($"上传失败:文件过大({fileInfo.Length / 1024 / 1024}MB),超过{maxSize / 1024 / 1024}MB限制", LogHelper.LogType.Error); return false; } @@ -348,16 +349,17 @@ namespace Ink_Canvas.Helpers // 检查文件扩展名 var fileExtension = Path.GetExtension(filePath).ToLower(); - if (fileExtension != ".png" && fileExtension != ".icstk") + if (fileExtension != ".png" && fileExtension != ".icstk" && fileExtension != ".zip") { return false; } - // 检查文件大小(最大10MB) + // 检查文件大小(最大10MB,ZIP文件可能更大,允许50MB) var fileInfo = new FileInfo(filePath); - if (fileInfo.Length > 10 * 1024 * 1024) + long maxSize = fileExtension == ".zip" ? 50 * 1024 * 1024 : 10 * 1024 * 1024; + if (fileInfo.Length > maxSize) { - LogHelper.WriteLogToFile($"上传失败:文件过大({fileInfo.Length / 1024 / 1024}MB),超过10MB限制", LogHelper.LogType.Error); + LogHelper.WriteLogToFile($"上传失败:文件过大({fileInfo.Length / 1024 / 1024}MB),超过{maxSize / 1024 / 1024}MB限制", LogHelper.LogType.Error); return false; } @@ -417,9 +419,24 @@ namespace Ink_Canvas.Helpers // 准备上传参数 var fileName = Path.GetFileNameWithoutExtension(filePath); var title = fileName; - var fileType = fileExtension == ".icstk" ? "墨迹文件" : "笔记"; + string fileType; + string tags; + if (fileExtension == ".zip") + { + fileType = "多页面墨迹压缩包"; + tags = "自动上传,多页面,zip,压缩包"; + } + else if (fileExtension == ".icstk") + { + fileType = "墨迹文件"; + tags = "自动上传,墨迹,icstk"; + } + else + { + fileType = "笔记"; + tags = "自动上传,笔记,png"; + } var description = $"自动上传的{fileType} - {DateTime.Now:yyyy-MM-dd HH:mm:ss}"; - var tags = fileExtension == ".icstk" ? "自动上传,墨迹,icstk" : "自动上传,笔记,png"; // 创建API客户端并上传文件 using (var apiClient = new DlassApiClient(APP_ID, APP_SECRET, apiBaseUrl, userToken)) @@ -466,7 +483,7 @@ namespace Ink_Canvas.Helpers // 检查文件扩展名 var fileExtension = Path.GetExtension(filePath).ToLower(); - if (fileExtension != ".png" && fileExtension != ".icstk") + if (fileExtension != ".png" && fileExtension != ".icstk" && fileExtension != ".zip") { return false; // 文件格式错误,不可重试 } @@ -475,7 +492,8 @@ namespace Ink_Canvas.Helpers try { var fileInfo = new FileInfo(filePath); - if (fileInfo.Length > 10 * 1024 * 1024) + long maxSize = fileExtension == ".zip" ? 50 * 1024 * 1024 : 10 * 1024 * 1024; + if (fileInfo.Length > maxSize) { return false; // 文件过大,不可重试 } diff --git a/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs b/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs index 0e3b6f12..dbd3bf50 100644 --- a/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs +++ b/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs @@ -246,6 +246,24 @@ namespace Ink_Canvas // 使用System.IO.Compression.FileSystem来创建ZIP ZipFile.CreateFromDirectory(tempDir, zipFileName); + // 异步上传ZIP文件到Dlass + _ = Task.Run(async () => + { + try + { + var delayMinutes = Settings?.Dlass?.AutoUploadDelayMinutes ?? 0; + if (delayMinutes > 0) + { + await Task.Delay(TimeSpan.FromMinutes(delayMinutes)); + } + + await Helpers.DlassNoteUploader.UploadNoteFileAsync(zipFileName); + } + catch (Exception) + { + } + }); + if (newNotice) ShowNotification($"多页面墨迹成功保存至压缩包 {zipFileName}"); } finally