乐趣区

关于java:文件上传工具类

package com.xiaoan.utils;

import org.apache.commons.io.filefilter.SuffixFileFilter;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * @author 23105
 * @version 1.0
 * @description: 上传文件的工具类
 * @date 13/2/2023 下午 5:55
 */
public class UploadFile {

    // 存储文件上传失败的错误信息
    private static Map<String, Object> error_result = new HashMap<>();
    // 存储头像的上传后果信息
    private static Map<String, Object> upload_result = new HashMap<>();

    /**
     * @description: 效验所上传图片的大小及格局等信息...
     * @param: photo
     * @param: path
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    private static Map<String, Object> uploadPhoto(MultipartFile photo, String path) {// 限度头像大小 (20M)
        int MAX_SIZE = 20971520;
        // 获取图片的原始名称
        String orginalName = photo.getOriginalFilename();
        // 如果保留文件的门路不存在, 则创立该目录
        File filePath = new File(path);
        if (!filePath.exists()) {filePath.mkdirs();
        }
        // 限度上传文件的大小
        if (photo.getSize() > MAX_SIZE) {error_result.put("success", false);
            error_result.put("msg", "上传的图片大小不能超过 20M 哟!");
            return error_result;
        }
        // 限度上传的文件类型
        String[] suffixs = new String[]{".png", ".PNG", ".jpg", ".JPG", ".jpeg", ".JPEG", ".gif", ".GIF", ".bmp", ".BMP"};
        SuffixFileFilter suffixFileFilter = new SuffixFileFilter(suffixs);
        if (!suffixFileFilter.accept(new File(path + orginalName))) {error_result.put("success", false);
            error_result.put("msg", "禁止上传此类型文件! 请上传图片哟!");
            return error_result;
        }

        return null;
    }

    /**
     * @description: (提取公共代码 : 进步代码的可重用性) 获取头像的上传后果信息
     * @param: photo
     * @param: dirPaht
     * @param: portraitPath
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    public static Map<String, Object> getUploadResult(MultipartFile photo, String dirPaht, String portraitPath) {if (!photo.isEmpty() && photo.getSize() > 0) {
            // 获取图片的原始名称
            String orginalName = photo.getOriginalFilename();
            // 上传图片,error_result: 存储头像上传失败的错误信息
            Map<String, Object> error_result = UploadFile.uploadPhoto(photo, dirPaht);
            if (error_result != null) {return error_result;}
            // 应用 UUID 重命名图片名称 (uuid__原始图片名称)
            String newPhotoName = UUID.randomUUID() + "__" + orginalName;
            // 将上传的文件保留到目标目录下
            try {photo.transferTo(new File(dirPaht + newPhotoName));
                upload_result.put("success", true);
                upload_result.put("portrait_path", portraitPath + newPhotoName);// 将存储头像的我的项目门路返回给页面
            } catch (IOException e) {e.printStackTrace();
                upload_result.put("success", false);
                upload_result.put("msg", "上传文件失败! 服务器端产生异样!");
                return upload_result;
            }

        } else {upload_result.put("success", false);
            upload_result.put("msg", "头像上传失败! 未找到指定图片!");
        }
        return upload_result;
    }
}
退出移动版