Springboot怎么实现图片上传
作者:mmseoamin日期:2023-12-25

1.首先图片上传,需要在数据库定义一个varchar类型的img字段图片字段

 2.需要在pom文件加图片上传的配置文件

 

        
        
            commons-io
            commons-io
            2.4
        

3.在yml里添加限制图片大小

#配置mysql的连接
spring:
  #图片上传
  servlet:
    multipart:
      enabled: true
      max-file-size: 50MB
      max-request-size: 50MB

4.html页面定义div

    
        
        
            
            
            
        
    

js中定义函数 图片上传

 

5.图片上传工具类

public class FileUtil {
	//上传
	/**
	 * 
uploadFile(上传)   
	 * 创建人:wrx
	 * 创建时间:2023年3月29日 下午3:21:17    
	 * 修改人:ba
	 * 修改时间:2023年3月29日 下午3:21:17    
	 * 修改备注: 
	 * @param imgfile
	 * @param request
	 * @return
*/ public static String uploadFile(MultipartFile imgfile,HttpServletRequest request){ //1、上传路径:项目发布tomcat服务器 //D:\workUtilsInstall\apache-tomcat-8.0.0\webapps\week_employee_hzy\\upload String path = request.getServletContext().getRealPath("/")+"/upload"; File file = new File(path); if(!file.exists()){//不存在 file.mkdirs(); } //生成新的文件名称,原因:防止文件名称一样后者上传的文件会覆盖前者上传的文件(前提是文件名称必须一样并且在用一个目录下) //生成新的文件名称,保证文件名称唯一有两种方法: // 1.通过UUID实现文件名称唯一 (UUID会生成32位字母+数字唯一的一个字符串) // 2.通过时间戳现文件名称唯一 (时间戳是毫秒级时间 时间会一直往上加,生成13位数字)注意只有java生成13位 其他则是10位比如oracle、mysql、php // 获取时间戳 //long currentTimeMillis = System.currentTimeMillis(); //System.out.println(currentTimeMillis); String uuid = UUID.randomUUID().toString(); String oldName = imgfile.getOriginalFilename();//1.jpg String suffix = oldName.substring(oldName.lastIndexOf(".")); String newFile = uuid+suffix; File file2 = new File(path+"\\"+newFile); try { imgfile.transferTo(file2); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return "upload/"+newFile; } }

6.Controller层调用图片上传方法

/**
     *
     *调用图片上传工具类
     * @param imgfile
     * @param request
     * @return java.lang.String
     * @author wrx
     * @date 2023/5/17 0017 16:00
     */
    @RequestMapping("uploadImg")
    public String uploadImg(MultipartFile imgfile, HttpServletRequest request){
        String filePath = FileUtil.uploadFile(imgfile, request);
        System.out.println("{\"path\":\"" + filePath + "\"}");
        return "{\"path\":\"" + filePath + "\"}";//可以
    }

 

访问这个路径http://localhost:8080/upload/b54e356b-6dba-48ae-8ea1-27b4dad158b5.png

访问成功图片上传就完成了