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