diff --git a/lib/utils/file_utils.dart b/lib/utils/file_utils.dart new file mode 100644 index 00000000..be18a209 --- /dev/null +++ b/lib/utils/file_utils.dart @@ -0,0 +1,48 @@ +import 'dart:io'; +import 'dart:typed_data'; +import 'package:path/path.dart' as p; +import 'package:mime_dart/mime_dart.dart'; +import 'package:uuid/uuid.dart'; +import 'package:path_provider/path_provider.dart'; + +const uuid = Uuid(); + +String? getFileExtension(String? mimeType) { + if (mimeType == null) { + return null; + } + return Mime.getExtensionsFromType(mimeType)?[0]; +} + +Future<String?> getFileDownloadpath(String? name, String? ext) async { + final Directory? downloadsDir = await getDownloadsDirectory(); + if (downloadsDir != null) { + name = name ?? getTempFileName(); + ext = (ext != null) ? ".$ext" : ""; + String path = '${downloadsDir.path}/$name$ext'; + int num = 1; + while (await File(path).exists()) { + path = '${downloadsDir.path}/$name (${num++})$ext'; + } + return path; + } + return null; +} + +Future<void> saveFile(String path, Uint8List content) async { + final file = File(path); + await file.writeAsBytes(content); +} + +String getShortPath(String path) { + var f = p.split(path); + if (f.length > 2) { + f = f.sublist(f.length - 2); + return ".../${p.joinAll(f)}"; + } + return path; +} + +String getTempFileName() { + return uuid.v1(); +} diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index ea29cf78..da50bab0 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -1,3 +1,4 @@ export 'ui_utils.dart'; export 'convert_utils.dart'; export 'http_utils.dart'; +export 'file_utils.dart';