【SpringBoot】实现一个简单的图片上传

时间:2024-03-27 16:14:46

前端上传表单

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form enctype="multipart/form-data"  method="post" action="/upload">
文件:<input type="file" name="header_img"/>
    <input type="submit" value="上传"  />
</form>
</body>
</html>

后端接口

  • private static  String filePath = "D:\\sprint\\spring\\src\\main\\resources\\static\\upload\\";
    
    @RequestMapping(value="/upload")
    public String upload(@RequestParam("header_img") MultipartFile file,HttpServletRequest request){
        System.out.println("文件名称"+file.getOriginalFilename());
        System.out.println("文件类型"+file.getContentType());
        System.out.println("文件大小"+file.getSize());
        //获取文件名称
        String fileName = file.getOriginalFilename();
        //获取文件后缀名称
        String suffixNmae = fileName.substring(fileName.lastIndexOf("."));
        //转换名称 方舟文件名称冲突
        fileName = UUID.randomUUID()+suffixNmae;
        System.out.println("转换后的文件名称"+fileName);
        File data = new File(filePath + fileName);
        try {
            file.transferTo(data);
        }catch ( IllegalStateException e){
            e.printStackTrace();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        return "1";
    }

限制图片大小

  • 不做任何处理的情况下,我上传一个2M左右的图片
    在这里插入图片描述
  • 在@SpringBootApplication 下加入拦截
    @Bean
    public MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        //单个文件最大
        factory.setMaxFileSize(DataSize.parse("10240KB")); //KB,MB
        /// 设置总上传数据总大小
        factory.setMaxRequestSize(DataSize.parse("1024000KB"));
        return factory.createMultipartConfig();
    }

在这里插入图片描述