Java MultipartFile实现上传文件/上传图片

作者:liuquanwork 时间:2022-04-19 07:07:19 

1. 判断允许上传文件的 文件后缀/图片后缀/相片后缀 和 其它工具类


import org.springframework.stereotype.Component;
import java.io.File;
import java.util.Arrays;
import java.util.List;

@Component
public class FileUtil {
 public static final List<String> IMAGE_EXTENSIONS = Arrays.asList(".jpg", ".jpeg", ".png");
}

import java.util.UUID;

public class CommonUtil {
 public static String getUUID() {
   String uuid = UUID.randomUUID().toString().replaceAll("-", "");
   return uuid;
 }
}

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateUtil {
 public static final String HH = "HH";
 public static final String YYYY_MM_DD = "yyyy-MM-dd";
 public static final DateTimeFormatter FORMATTER_HH = DateTimeFormatter.ofPattern(HH);
 public static final DateTimeFormatter FORMATTER_YYYY_MM_DD = DateTimeFormatter.ofPattern(YYYY_MM_DD);
 public static String getHH() {
   return FORMATTER_HH.format(LocalDateTime.now());
 }
 public static String getYYYYMMDD() {
   return FORMATTER_YYYY_MM_DD.format(LocalDateTime.now());
 }
}

2. 上传接口


@PostMapping("/updateImage.do")
public Map<String, String> updateImage(@RequestParam("image") MultipartFile[] multfiles) {
 Map<String, String> result = new HashMap<>();
   if (multfiles.length == 0) {
result.put("message", "请选择图片!");
return result;
   }

// 源文件名称
   final String originalFileName = multfiles[0].getOriginalFilename();
   if (StringUtils.isBlank(originalFileName)) {
result.put("message", "请选择图片!");
return result;
   }

// 文件后缀[.jpg]
   final String suffix = originalFileName.substring(originalFileName.lastIndexOf(".")).toLowerCase();
   if (!FileUtil.IMAGE_EXTENSIONS.contains(suffix)) {
result.put("message", "图片格式错误!");
return result;
   }

String lastFilePath;
   String newFileName = CommonUtil.getUUID() + suffix;
   String folderName = File.separator + "temp" + File.separator;
   String relativePath = folderName + DateUtil.getYYYYMMDD() + File.separator + DateUtil.getHH();
   String filePath = "D:\\file" + relativePath;
   String fileUrl = null;
   File targetFile = new File(filePath);
   if (!targetFile.exists()) {
     targetFile.mkdirs();
   }
   FileOutputStream out = null;
   try {
     lastFilePath = filePath + File.separator + newFileName;
     out = new FileOutputStream(lastFilePath);
     out.write(multfiles[0].getBytes());
     fileUrl = "http://127.0.0.1:9000" + relativePath + File.separator + newFileName;
   } catch (Exception e) {
     e.printStackTrace();
   } finally {
     if (out != null) {
       try {
         out.flush();
       } catch (IOException e) {
         e.printStackTrace();
       }
       try {
         out.close();
       } catch (IOException e) {
         e.printStackTrace();
       }
     }
   }

if (fileUrl == null) {
result.put("message", "图片上传失败!");
return result;
   }

result.put("message", "上传成功!");
result.put("url", fileUrl);
return result;
 }

3. 上传成功


url => http://127.0.0.1:9000/temp/2019-09-12/14/0eac00b96f134652b34172e84febe8d1.jpg

来源:https://juejin.cn/post/6911593761080344583

标签:Java,MultipartFile,上传,文件,图片
0
投稿

猜你喜欢

  • MyBatis-Plus自动填充功能失效导致的原因及解决

    2023-05-11 13:16:08
  • Java冒泡排序的定义与实例代码

    2022-03-29 12:32:31
  • java使用poi生成excel的步骤

    2021-08-25 07:03:45
  • 使用Android studio创建的AIDL编译时找不到自定义类的解决办法

    2023-06-23 10:59:41
  • Java中Arraylist动态扩容方法详解

    2023-04-30 23:25:53
  • 超详细的Intellij IDEA 看源码必备技能

    2021-10-27 09:03:16
  • Spring JDBCTemplate原理及使用实例

    2023-03-11 09:47:19
  • Java集合之Set接口及其实现类精解

    2022-01-23 17:27:44
  • C#跨PC远程调用程序并显示UI界面

    2022-06-22 13:42:38
  • 详解Spring Boot Oauth2缓存UserDetails到Ehcache

    2023-02-26 21:57:12
  • java反射获取和调用方法

    2021-11-23 11:05:02
  • Unity3D实现旋钮控制灯光效果

    2021-09-05 21:16:58
  • 使用注解解决ShardingJdbc不支持复杂SQL方法

    2022-08-03 02:15:12
  • JVM内存管理之JAVA语言的内存管理详解

    2021-11-01 12:00:10
  • Java规则引擎Easy Rules的使用介绍

    2023-05-04 01:42:57
  • Java C++题解leetcode 1684统计一致字符串的数目示例

    2023-04-23 09:06:31
  • Java高并发之CyclicBarrier的用法详解

    2023-11-17 16:27:57
  • java教程之java注解annotation使用方法

    2023-11-13 20:18:57
  • java中申请不定长度数组ArrayList的方法

    2023-02-24 17:37:37
  • Spring Boot2.0 @ConfigurationProperties使用详解

    2021-06-11 17:21:30
  • asp之家 软件编程 m.aspxhome.com