zjh
2025-04-24 672ce84d5ce6545a0e81709ea736c69cbbef8c1a
ltkj-common/src/main/java/com/ltkj/common/utils/file/FileUploadUtils.java
@@ -3,6 +3,8 @@
import java.io.File;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import com.ltkj.common.config.ltkjConfig;
@@ -76,6 +78,14 @@
        }
    }
    public static final String upload(String baseDir,String fileName,MultipartFile file) throws IOException {
        try {
            return upload(baseDir,fileName, file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
        } catch (Exception e) {
            throw new IOException(e.getMessage(), e);
        }
    }
    /**
     * 文件上传
     *
@@ -100,16 +110,38 @@
        String fileName = extractFilename(file);
        //String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath();
        String absPath = getAbsoluteFile(baseDir, fileName).getPath();
        file.transferTo(Paths.get(absPath));
        return getPathFileName(baseDir, fileName);
    }
    public static final String upload(String baseDir,String fileName, MultipartFile file, String[] allowedExtension)
            throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,
            InvalidExtensionException {
        int fileNamelength = Objects.requireNonNull(file.getOriginalFilename()).length();
        if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH) {
            throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);
        }
        assertAllowed(file, allowedExtension);
        fileName =StringUtils.format("{}/{}.{}", DateUtils.datePath(),
                fileName, getExtension(file));
        String absPath = getAbsoluteFile(baseDir, fileName).getPath();
        file.transferTo(Paths.get(absPath));
        return fileName;
    }
    /**
     * 编码文件名
     */
    public static final String extractFilename(MultipartFile file) {
        return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(),
                FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType), getExtension(file));
    }
    public static final String extractXdtFilename(MultipartFile file) {
        return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(),
                FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType), getExtension(file));
    }
@@ -128,8 +160,9 @@
    public static final String getPathFileName(String uploadDir, String fileName) throws IOException {
        int dirLastIndex = ltkjConfig.getProfile().length() + 1;
        String currentDir = StringUtils.substring(uploadDir, dirLastIndex);
        return Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName;
        return Constants.RESOURCE_PREFIX + currentDir + "/" + fileName;
    }
    /**
     * 文件大小校验
@@ -196,4 +229,17 @@
        }
        return extension;
    }
    public static Map<String, String> getFileSize(MultipartFile file) throws IOException {
        long fileSizeBytes = file.getSize();
        double fileSizeMB = fileSizeBytes / (1024.0 * 1024.0);
        double fileSizeGB = fileSizeBytes / (1024.0 * 1024.0 * 1024.0);
        String fileSizeMBStr = String.format("%.2f MB", fileSizeMB);
        String fileSizeGBStr = String.format("%.2f GB", fileSizeGB);
        Map<String, String> result = new HashMap<>();
        result.put("fileSizeBytes", fileSizeBytes + " Bytes");
        result.put("fileSizeMB", fileSizeMBStr);
        result.put("fileSizeGB", fileSizeGBStr);
        return result;
    }
}