From 5d89f23ddc0d534ae28c430945f16cfa30576a64 Mon Sep 17 00:00:00 2001 From: wuxinglong Date: Fri, 6 Feb 2026 14:40:19 +0800 Subject: [PATCH] =?UTF-8?q?fix(upload=5Fimages):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=96=87=E4=BB=B6=E5=A4=84=E7=90=86=E4=B8=8E?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E4=B8=8A=E4=BC=A0=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 上传图片后删除oss上传的临时文件,防止文件残留 - 选择上传方式时修正相册最大数量提示,避免显示null - 压缩图片时创建临时目录存储压缩文件,提升文件管理安全性 - 保留压缩文件以供后续使用,避免压缩后文件被误删 --- lib/upload_image/ossUtil.dart | 2 ++ lib/upload_image/upload_images_tool.dart | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/upload_image/ossUtil.dart b/lib/upload_image/ossUtil.dart index df1b6e9..3532efc 100755 --- a/lib/upload_image/ossUtil.dart +++ b/lib/upload_image/ossUtil.dart @@ -77,6 +77,8 @@ class UploadOss { ); print("response ===== $response"); EasyLoading.dismiss(); + /// 删除临时文件 + File(path).deleteSync(); // 成功后返回文件访问路径 return "$ossHost/$ossDirectory$pathName"; } on DioError catch (e) { diff --git a/lib/upload_image/upload_images_tool.dart b/lib/upload_image/upload_images_tool.dart index c1aff5a..dbc24e8 100644 --- a/lib/upload_image/upload_images_tool.dart +++ b/lib/upload_image/upload_images_tool.dart @@ -139,7 +139,7 @@ class UploadImagesTool { ) : CupertinoActionSheet( title: const Text('上传图片'), - message: (max == null || max == 0) ? null : Text('请选择上传方式\n相册最多${max ?? 9}张'), + message: (max == null || max == 0) ? null : Text('请选择上传方式\n相册最多${max}张'), actions: isAddOtherWidget != null ? [ isAddOtherWidget, @@ -279,6 +279,8 @@ class UploadImagesTool { ); chooseImages?.call([path]); } else { + /// 创建临时目录 + final Directory tempDir = Directory.systemTemp.createTempSync('compressed_images_'); final List? result = await AssetPicker.pickAssets( Get.context!, pickerConfig: AssetPickerConfig(maxAssets: max ?? 50), @@ -293,12 +295,10 @@ class UploadImagesTool { final String extension = file.absolute.path.split('.').last; /// 压缩并保存到临时文件 final XFile? compressedFile = await FlutterImageCompress.compressAndGetFile( - file.absolute.path, '${file.parent.path}/${DateTime.now().millisecondsSinceEpoch}_compressed.$extension', + file.absolute.path, '${tempDir.path}/${DateTime.now().millisecondsSinceEpoch}_compressed.$extension', quality: 80, minWidth: 1920, minHeight: 1080); if (compressedFile != null) { selectedFiles.add(compressedFile); - /// 删除临时文件 - File(compressedFile.path).deleteSync(); } } }