如何在SpringBoot当中上传多个图片【上传多个图片 】 附赠工具类


1.SpringBoot 上传图片工具类

 public class SpringUploadUtil {

     /***
* 上传图片后返回文件名称用于存储数据库
* @author MRC
* @date 2019年4月8日上午11:22:54
* @return
*/
public static String uploadPics(List<MultipartFile> file){ int index = 0;
StringBuffer sb = new StringBuffer(); for (MultipartFile multipartFile : file) {
if (file.isEmpty()) {
continue;
}
try {
//工具类生成文件名
String fileName = FileCreateNameUtils.toCreateName();
//获取文件后缀名
String fileType = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().indexOf("."));
File f = new File("D:\\upload\\"+fileName+fileType);
if (f.exists()) {
//判断这个文件是否存在,若存在则变换文件名 防止覆盖
fileName = FileCreateNameUtils.toCreateName();
}
byte[] bytes = multipartFile.getBytes();
Path path = Paths.get("upload/" + fileName+fileType);
//写入磁盘
Files.write(path, bytes); sb.append(StaticUtils.UPLOAD+fileName+fileType);
index++;
if (file.size() != index ) {
sb.append(",");
}
} catch (IOException e) {
e.printStackTrace();
}
} return sb.toString();
}

经过工具类图片上传后,返回的字符串是用逗号分隔的图片上传后的路径!

举个栗子: upload/2019041615094470712493.jpg,upload/2019041615094470712456.jpg

**注明 文件名生成的工具类 按照时间戳和随机字符串生成文件的名字

public class FileCreateNameUtils {

    public static final String numberChar = "0123456789";

    /***
* 文件名生成工具类
*/ public static String toCreateName() { return getNowDatetoString() + generateNum(10); } /***
* 生成日期字符串 yyyyMMddHHmm
*
* @author MRC
* @date 2019年4月16日下午2:19:37
* @return
*/
public static String getNowDatetoString() {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmm");
String dateString = formatter.format(currentTime);
return dateString;
} /***
* 生成随机数
* @author MRC
* @date 2019年4月16日下午2:21:06
* @param len
* @return
*/
public static String generateNum(int len) {
StringBuffer sb = new StringBuffer();
Random random = new Random();
for (int i = 0; i < len; i++) {
sb.append(numberChar.charAt(random.nextInt(numberChar.length())));
}
return sb.toString();
}

2.在Controller层调用上传图片方法


    @PostMapping("orderComment")
@ResponseBody
public Map<String, Object> orderComment(HttpServletRequest request){ Map<String, Object> map = new HashMap<>();

     // 从前台的请求当中取出 file文件类型
List<MultipartFile> list = ((MultipartHttpServletRequest)request).getFiles("file"); String pics = null;
if (list.size() != 0) {
//上传图片 调用工具类上传 返回上传后文件的名字
pics = SpringUploadUtil.uploadPics(list);
}
    
    // pics = "upload/2019041615094470712493.jpg,upload/2019041615094470712456.jpg"
}

上传后返回 图片路径拼接的字符串  使用英文状态下(,)分隔


3.前台上传部分代码示例

<html>
<body>
<h1>Spring Boot file upload example</h1>
<form method="POST" action="/upload" enctype="multipart/form-data">
<input type="file" name="file" /><br/><br/>
<input type="file" name="file" /><br/><br/>
<input type="submit" value="Submit" />
</form>
</body>
</html>


4.参考博客:https://www.cnblogs.com/ityouknow/p/8298344.html

最新文章

  1. 《C#微信开发系列(1)-启用开发者模式》
  2. windows 安装mysql 步骤
  3. ::selection{}
  4. C# 时间现实问题(12小时制与24小时制)
  5. #define用法集锦
  6. Javascript中二级联动
  7. 【python】三个变量互换值
  8. asp.net redis 实战
  9. (转)background-position—CSS设置背景图片的位置
  10. ASP.NET优化性能方法之一禁用调试模式(转)
  11. fullcalendar日历控件集合知识
  12. keil程序在外部RAM中调试的问题总结(个人的一点经验总结)
  13. Hadoop第一式:配置Linux环境
  14. Java开源框架知识整理
  15. Sublime的插件Color Highlighter的安装方法
  16. Web前端开发最佳实践(8):还没有给CSS样式排序?其实你可以更专业一些
  17. [ 原创 ]学习笔记-三种向ListView中填充简单文本的方法
  18. bzoj 1209
  19. WPF 自定义命令 以及 命令的启用与禁用
  20. 【BZOJ4380】[POI2015]Myjnie 区间DP

热门文章

  1. android内存回收顺序
  2. VueJS 集成 medium editor 自定义编辑器按钮
  3. shell 监控磁盘使用率【转】
  4. 挂载cifs报错mount error(13): Permission denied(域账号访问时报错)
  5. 63.UniquePaths II---dp
  6. 【bzoj4293】【PA2015】Siano
  7. Vue.js写一个SPA登录页面的过程
  8. python爬取网易云音乐歌单音乐
  9. windows 下 nginx 配置虚拟主机
  10. 某PCBA企业应用易普优APS实现高级计划排程案例