private static final String IMAGE_TYPE_PROMPT = "文件格式仅支持jpg、png";
private static final String IMAGE_FILE_SIZE_PROMPT = "文件格式仅支持jpg、png";
public String saveUserImageToDir(MultipartFile multipartFile, String dir) throws AobpException, IOException {
???if (!ImageUtil.checkIsImgByName(multipartFile.getOriginalFilename())) {
???????throw new AobpException(ExceptionConstant.PARAMS_INVALID, IMAGE_TYPE_PROMPT);
???}
???if (!ImageUtil.fileSizeLegal(multipartFile.getSize())) {
???????throw new AobpException(ExceptionConstant.PARAMS_INVALID, IMAGE_FILE_SIZE_PROMPT);
???}
???return UploadUtil.upload(multipartFile,dir);
}
public class UploadUtil {
???/**
????* @return dest file name
????*/
???public static String uploadFileToDir(MultipartFile multipartFile, String saveDir) throws AobpException {
???????String fileName = UUID.randomUUID().toString().replaceAll("-", "");
???????// 文件新路径:文件名
???????uploadFileToDir(multipartFile, saveDir, fileName);
???????return fileName;
???}
???public static void uploadFileToDir(MultipartFile multipartFile, String saveDir, String fileName) throws AobpException {
???????uploadFile(multipartFile, saveDir + File.separator + fileName);
???}
???public static void uploadFile(MultipartFile multipartFile, String filePath) throws AobpException {
???????try (InputStream inputStream = multipartFile.getInputStream();
????????????FileOutputStream outputStream = new FileOutputStream(filePath)) {
???????????IOUtils.copy(inputStream, outputStream);
???????} catch (Exception e) {
???????????log.error("copy file failed", e);
???????????throw new AobpException(ExceptionConstant.INTERNAL_ERR, ExceptionConstant.UNKNOWN_ERROR);
???????}
???}
???
???//用户上传相关Yao
???protected ?static Map<String, String> getFilePath(String path, String originName){
???????Date nowDate = new Date();
???????String fileFolder = path+File.separator+new SimpleDateFormat("yyyy").format(nowDate)+
???????????????????????????????????File.separator+new SimpleDateFormat("MM").format(nowDate);
???
???????File fileNew = new File(fileFolder);
???????if(!fileNew.exists()){
???????????fileNew.mkdirs();
???????}
???????String fileName = new SimpleDateFormat("yyyyMMddhhmmssSSSS").format(nowDate)+(int)((Math.random()*9+1)*100000)+"."+originName.substring(originName.lastIndexOf(".")+1);
???????String filePath = fileFolder+File.separator+fileName;
???????Map<String, String > resultMap = new HashMap();
???????resultMap.put("fileName",fileName);
???????resultMap.put("filePath",filePath);
???????return resultMap;
???}
???
???public static String ?upload(MultipartFile file, String saveDir) throws IOException, AobpException {
???????//如果文件内容不为空,则写入上传路径
???????if (!file.isEmpty()) {
???????????//上传原文件名
???????????String originName = file.getOriginalFilename();
???????????Map<String, String> resultMap = getFilePath(saveDir, originName);
???????????File filePath = new File(resultMap.get("filePath"));
???????????try(FileOutputStream fileOutputStream = new FileOutputStream(filePath)){
???????????????FileCopyUtils.copy(file.getInputStream(), fileOutputStream);
???????????}
???????????return resultMap.get("fileName");
???????}
???????throw new AobpException(500, "图片上传失败");
???}
}
图片上传与下载
原文地址:https://www.cnblogs.com/gavin-yao/p/10567248.html