fix(upload_images): 优化临时文件处理与图片上传提示
- 上传图片后删除oss上传的临时文件,防止文件残留 - 选择上传方式时修正相册最大数量提示,避免显示null - 压缩图片时创建临时目录存储压缩文件,提升文件管理安全性 - 保留压缩文件以供后续使用,避免压缩后文件被误删
This commit is contained in:
@@ -77,6 +77,8 @@ class UploadOss {
|
|||||||
);
|
);
|
||||||
print("response ===== $response");
|
print("response ===== $response");
|
||||||
EasyLoading.dismiss();
|
EasyLoading.dismiss();
|
||||||
|
/// 删除临时文件
|
||||||
|
File(path).deleteSync();
|
||||||
// 成功后返回文件访问路径
|
// 成功后返回文件访问路径
|
||||||
return "$ossHost/$ossDirectory$pathName";
|
return "$ossHost/$ossDirectory$pathName";
|
||||||
} on DioError catch (e) {
|
} on DioError catch (e) {
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ class UploadImagesTool {
|
|||||||
)
|
)
|
||||||
: CupertinoActionSheet(
|
: CupertinoActionSheet(
|
||||||
title: const Text('上传图片'),
|
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
|
actions: isAddOtherWidget != null
|
||||||
? <Widget>[
|
? <Widget>[
|
||||||
isAddOtherWidget,
|
isAddOtherWidget,
|
||||||
@@ -279,6 +279,8 @@ class UploadImagesTool {
|
|||||||
);
|
);
|
||||||
chooseImages?.call([path]);
|
chooseImages?.call([path]);
|
||||||
} else {
|
} else {
|
||||||
|
/// 创建临时目录
|
||||||
|
final Directory tempDir = Directory.systemTemp.createTempSync('compressed_images_');
|
||||||
final List<AssetEntity>? result = await AssetPicker.pickAssets(
|
final List<AssetEntity>? result = await AssetPicker.pickAssets(
|
||||||
Get.context!,
|
Get.context!,
|
||||||
pickerConfig: AssetPickerConfig(maxAssets: max ?? 50),
|
pickerConfig: AssetPickerConfig(maxAssets: max ?? 50),
|
||||||
@@ -293,12 +295,10 @@ class UploadImagesTool {
|
|||||||
final String extension = file.absolute.path.split('.').last;
|
final String extension = file.absolute.path.split('.').last;
|
||||||
/// 压缩并保存到临时文件
|
/// 压缩并保存到临时文件
|
||||||
final XFile? compressedFile = await FlutterImageCompress.compressAndGetFile(
|
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);
|
quality: 80, minWidth: 1920, minHeight: 1080);
|
||||||
if (compressedFile != null) {
|
if (compressedFile != null) {
|
||||||
selectedFiles.add(compressedFile);
|
selectedFiles.add(compressedFile);
|
||||||
/// 删除临时文件
|
|
||||||
File(compressedFile.path).deleteSync();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user