From 9b4433fddf5b401edb0aace8a404ac733b122702 Mon Sep 17 00:00:00 2001
From: 田源 <tianyuan@vci-tech.com>
Date: 星期四, 03 四月 2025 14:35:02 +0800
Subject: [PATCH] 添加非密字段显示

---
 Source/BladeX-Tool/blade-core-boot/src/main/java/org/springblade/core/boot/file/BladeFileUtil.java |  240 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 240 insertions(+), 0 deletions(-)

diff --git a/Source/BladeX-Tool/blade-core-boot/src/main/java/org/springblade/core/boot/file/BladeFileUtil.java b/Source/BladeX-Tool/blade-core-boot/src/main/java/org/springblade/core/boot/file/BladeFileUtil.java
new file mode 100644
index 0000000..beae556
--- /dev/null
+++ b/Source/BladeX-Tool/blade-core-boot/src/main/java/org/springblade/core/boot/file/BladeFileUtil.java
@@ -0,0 +1,240 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package org.springblade.core.boot.file;
+
+import org.springblade.core.tool.utils.StringPool;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.*;
+
+/**
+ * 鏂囦欢宸ュ叿绫�
+ *
+ * @author Chill
+ */
+public class BladeFileUtil {
+
+	/**
+	 * 瀹氫箟鍏佽涓婁紶鐨勬枃浠舵墿灞曞悕
+	 */
+	private static final HashMap<String, String> EXT_MAP = new HashMap<>();
+	private static final String IS_DIR = "is_dir";
+	private static final String FILE_NAME = "filename";
+	private static final String FILE_SIZE = "filesize";
+
+	/**
+	 * 鍥剧墖鎵╁睍鍚�
+	 */
+	private static final String[] FILE_TYPES = new String[]{"gif", "jpg", "jpeg", "png", "bmp"};
+
+	static {
+		EXT_MAP.put("image", ".gif,.jpg,.jpeg,.png,.bmp,.JPG,.JPEG,.PNG");
+		EXT_MAP.put("flash", ".swf,.flv");
+		EXT_MAP.put("media", ".swf,.flv,.mp3,.mp4,.wav,.wma,.wmv,.mid,.avi,.mpg,.asf,.rm,.rmvb");
+		EXT_MAP.put("file", ".doc,.docx,.xls,.xlsx,.ppt,.htm,.html,.txt,.zip,.rar,.gz,.bz2");
+		EXT_MAP.put("allfile", ".gif,.jpg,.jpeg,.png,.bmp,.swf,.flv,.mp3,.mp4,.wav,.wma,.wmv,.mid,.avi,.mpg,.asf,.rm,.rmvb,.doc,.docx,.xls,.xlsx,.ppt,.htm,.html,.txt,.zip,.rar,.gz,.bz2");
+	}
+
+	/**
+	 * 鑾峰彇鏂囦欢鍚庣紑
+	 *
+	 * @param fileName 鏂囦欢鍚�
+	 * @return String 杩斿洖鍚庣紑
+	 */
+	public static String getFileExt(String fileName) {
+		return fileName.substring(fileName.lastIndexOf(StringPool.DOT));
+	}
+
+	/**
+	 * 娴嬭瘯鏂囦欢鍚庣紑 鍙鎸囧畾鍚庣紑鐨勬枃浠朵笂浼狅紝鍍廽sp,war,sh绛夊嵄闄╃殑鍚庣紑绂佹
+	 *
+	 * @param dir      鐩綍
+	 * @param fileName 鏂囦欢鍚�
+	 * @return 杩斿洖鎴愬姛涓庡惁
+	 */
+	public static boolean testExt(String dir, String fileName) {
+		String fileExt = getFileExt(fileName);
+		String ext = EXT_MAP.get(dir);
+		return StringUtil.isNotBlank(ext) && (ext.contains(fileExt.toLowerCase()) || ext.contains(fileExt.toUpperCase()));
+	}
+
+	/**
+	 * 鏂囦欢绠$悊鎺掑簭
+	 */
+	public enum FileSort {
+
+		/**
+		 * 澶у皬
+		 */
+		size,
+
+		/**
+		 * 绫诲瀷
+		 */
+		type,
+
+		/**
+		 * 鍚嶇О
+		 */
+		name;
+
+		/**
+		 * 鏂囨湰鎺掑簭杞崲鎴愭灇涓�
+		 *
+		 * @param sort
+		 * @return
+		 */
+		public static FileSort of(String sort) {
+			try {
+				return FileSort.valueOf(sort);
+			} catch (Exception e) {
+				return FileSort.name;
+			}
+		}
+	}
+
+	public static class NameComparator implements Comparator {
+		@Override
+		public int compare(Object a, Object b) {
+			Hashtable hashA = (Hashtable) a;
+			Hashtable hashB = (Hashtable) b;
+			if (((Boolean) hashA.get(IS_DIR)) && !((Boolean) hashB.get(IS_DIR))) {
+				return -1;
+			} else if (!((Boolean) hashA.get(IS_DIR)) && ((Boolean) hashB.get(IS_DIR))) {
+				return 1;
+			} else {
+				return ((String) hashA.get(FILE_NAME)).compareTo((String) hashB.get(FILE_NAME));
+			}
+		}
+	}
+
+	public static class SizeComparator implements Comparator {
+		@Override
+		public int compare(Object a, Object b) {
+			Hashtable hashA = (Hashtable) a;
+			Hashtable hashB = (Hashtable) b;
+			if (((Boolean) hashA.get(IS_DIR)) && !((Boolean) hashB.get(IS_DIR))) {
+				return -1;
+			} else if (!((Boolean) hashA.get(IS_DIR)) && ((Boolean) hashB.get(IS_DIR))) {
+				return 1;
+			} else {
+				if (((Long) hashA.get(FILE_SIZE)) > ((Long) hashB.get(FILE_SIZE))) {
+					return 1;
+				} else if (((Long) hashA.get(FILE_SIZE)) < ((Long) hashB.get(FILE_SIZE))) {
+					return -1;
+				} else {
+					return 0;
+				}
+			}
+		}
+	}
+
+	public static class TypeComparator implements Comparator {
+		@Override
+		public int compare(Object a, Object b) {
+			Hashtable hashA = (Hashtable) a;
+			Hashtable hashB = (Hashtable) b;
+			if (((Boolean) hashA.get(IS_DIR)) && !((Boolean) hashB.get(IS_DIR))) {
+				return -1;
+			} else if (!((Boolean) hashA.get(IS_DIR)) && ((Boolean) hashB.get(IS_DIR))) {
+				return 1;
+			} else {
+				return ((String) hashA.get("filetype")).compareTo((String) hashB.get("filetype"));
+			}
+		}
+	}
+
+	public static String formatUrl(String url) {
+		return url.replaceAll("\\\\", "/");
+	}
+
+
+	/********************************BladeFile灏佽********************************************************/
+
+	/**
+	 * 鑾峰彇BladeFile灏佽绫�
+	 *
+	 * @param file 鏂囦欢
+	 * @return BladeFile
+	 */
+	public static LocalFile getFile(MultipartFile file) {
+		return getFile(file, "image", null, null);
+	}
+
+	/**
+	 * 鑾峰彇BladeFile灏佽绫�
+	 *
+	 * @param file 鏂囦欢
+	 * @param dir  鐩綍
+	 * @return BladeFile
+	 */
+	public static LocalFile getFile(MultipartFile file, String dir) {
+		return getFile(file, dir, null, null);
+	}
+
+	/**
+	 * 鑾峰彇BladeFile灏佽绫�
+	 *
+	 * @param file        鏂囦欢
+	 * @param dir         鐩綍
+	 * @param path        璺緞
+	 * @param virtualPath 铏氭嫙璺緞
+	 * @return BladeFile
+	 */
+	public static LocalFile getFile(MultipartFile file, String dir, String path, String virtualPath) {
+		return new LocalFile(file, dir, path, virtualPath);
+	}
+
+	/**
+	 * 鑾峰彇BladeFile灏佽绫�
+	 *
+	 * @param files 鏂囦欢闆嗗悎
+	 * @return BladeFile
+	 */
+	public static List<LocalFile> getFiles(List<MultipartFile> files) {
+		return getFiles(files, "image", null, null);
+	}
+
+	/**
+	 * 鑾峰彇BladeFile灏佽绫�
+	 *
+	 * @param files 鏂囦欢闆嗗悎
+	 * @param dir   鐩綍
+	 * @return BladeFile
+	 */
+	public static List<LocalFile> getFiles(List<MultipartFile> files, String dir) {
+		return getFiles(files, dir, null, null);
+	}
+
+	/**
+	 * 鑾峰彇BladeFile灏佽绫�
+	 *
+	 * @param files       鏂囦欢闆嗗悎
+	 * @param path        璺緞
+	 * @param virtualPath 铏氭嫙璺緞
+	 * @return BladeFile
+	 */
+	public static List<LocalFile> getFiles(List<MultipartFile> files, String dir, String path, String virtualPath) {
+		List<LocalFile> list = new ArrayList<>();
+		for (MultipartFile file : files) {
+			list.add(new LocalFile(file, dir, path, virtualPath));
+		}
+		return list;
+	}
+
+}

--
Gitblit v1.9.3