123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- class FileUtils {
- // 支持的图片格式列表
- static const imageExtensions = [
- 'jpg', 'jpeg', 'png', 'gif', 'webp',
- 'bmp', 'tiff', 'svg', 'heic', 'heif'
- ];
- // 支持的文档格式列表
- static const documentExtensions = [
- 'pdf', 'doc', 'docx', 'xls', 'xlsx',
- 'ppt', 'pptx', 'txt', 'rtf', 'csv',
- 'odt', 'ods', 'odp'
- ];
- // 获取 URL 的文件扩展名(小写)
- static String? _getFileExtension(String url) {
- try {
- // 处理带有查询参数的 URL
- final uri = Uri.parse(url);
- final pathSegments = uri.pathSegments;
- if (pathSegments.isEmpty) return null;
- final fileName = pathSegments.last;
- final dotIndex = fileName.lastIndexOf('.');
- if (dotIndex == -1) return null;
- return fileName.substring(dotIndex + 1).toLowerCase();
- } catch (e) {
- return null;
- }
- }
- // 判断是否是图片
- static bool isImage(String url) {
- final ext = _getFileExtension(url);
- return ext != null && imageExtensions.contains(ext);
- }
- // 判断是否是文档
- static bool isDocument(String url) {
- final ext = _getFileExtension(url);
- return ext != null && documentExtensions.contains(ext);
- }
- // 综合判断方法
- static FileType getFileType(String url) {
- final ext = _getFileExtension(url);
- if (ext == null) return FileType.unknown;
- if (imageExtensions.contains(ext)) return FileType.image;
- if (documentExtensions.contains(ext)) return FileType.document;
- return FileType.unknown;
- }
- }
- enum FileType { image, document, unknown }
|