zoukankan      html  css  js  c++  java
  • springBoot+jpa实现图片上传功能

    springBoot+jpa实现图片上传功能

    扩展知识点

    1. spring集成了MultipartFile接口,该接口为参数https://blog.csdn.net/woainike/article/details/6620862
    2. 有一个实现类,CommonsMultipartFile,该实现类用于读取文件 的类,相当于读取流,将本地文件读入内存,这是inputStream输入流的封装。因为MultipartFile接口继承了InputStream。可以通过看源码知道了解。
    3. java中的正斜杠‘/’和反斜杠‘’问题:https://blog.csdn.net/qq_33393542/article/details/80336945

    图片上传功能的实现步骤

    1. 首先判断读取的文件是否为空
    if (file.isEmpty()) {
        System.out.println("文件为空空");
    }
    
    1. 获取文件名
    String fileName = file.getOriginalFilename();  // 文件名
    
    1. 获取文件名后缀
    String suffixName = fileName.substring(fileName.lastIndexOf("."));  // 后缀名
    
    1. 因为要限制上传文件的类型,所以要判断文件名后缀是否属于要求的类型
    if(!suffixName.equals(".jpg") && !suffixName.equals(".png")){
        return Result.error("请选择图片!!!");
    }
    
    1. 文件上传到服务器的文件存储路径
    String filePath = "D://temp-rainy//"; // 上传后的路径
    
    1. 为了防止文件重名,添加uuid前缀
    fileName = UUID.randomUUID() + suffixName; // 新文件名
    
    1. 创建上传到服务器的文件的路径
    File dest = new File(filePath + fileName);
    if (!dest.getParentFile().exists()) {
        dest.getParentFile().mkdirs();
    }
    
    1. 上传文件到服务器,相当于将内存的文件输出到服务器,OutputStream,需要try....catch....
    try {
        file.transferTo(dest);
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    1. 将文件路径返回给前端,让前端进行下载或者查看图片。
    String filename = "/temp-rainy/" + fileName;
    return Result.success(filename);
    
    

    源码

    @RestController
    @RequestMapping(value = "/baseTest")
    @CrossOrigin(origins = {"*","null"})
    public class BaseTestController {
        @PostMapping(value = "/base64Upload")
        public Result uploadImage(@RequestParam(value = "file") MultipartFile file,  HttpServletRequest request, HttpServletResponse response) throws Exception{
            if (file.isEmpty()) {
                System.out.println("文件为空空");
            }
            String fileName = file.getOriginalFilename();  // 文件名
            String suffixName = fileName.substring(fileName.lastIndexOf("."));  // 后缀名
            if(!suffixName.equals(".jpg") && !suffixName.equals(".png")){
                return Result.error("请选择图片!!!");
            }
            String filePath = "D://temp-rainy//"; // 上传后的路径
            fileName = UUID.randomUUID() + suffixName; // 新文件名
            File dest = new File(filePath + fileName);
            if (!dest.getParentFile().exists()) {
                dest.getParentFile().mkdirs();
            }
            try {
                file.transferTo(dest);
            } catch (IOException e) {
                e.printStackTrace();
            }
            String filename = "/temp-rainy/" + fileName;
            return Result.success(filename);
        }
    }
    
    

    参考文章:

    1. https://blog.csdn.net/u013380777/article/details/58603803
    2. https://blog.csdn.net/qq_41441312/article/details/80287498
    3. https://blog.csdn.net/ZHOU_VIP/article/details/88242482
    4. https://www.cnblogs.com/jueyushanlang/p/9243647.html
    5. https://blog.csdn.net/woainike/article/details/6620862
    6. https://blog.csdn.net/zerolaw/article/details/81083018
    7. https://blog.csdn.net/Peter_S/article/details/84951978
    8. https://blog.csdn.net/sdut406/article/details/85647982
  • 相关阅读:
    pymysql
    Mysql
    协程
    线程池
    线程 条件
    线程 事件
    线程
    requests
    Linux 时区不对的解决办法
    Linux 简单命令
  • 原文地址:https://www.cnblogs.com/zhangkaifan/p/11029156.html
Copyright © 2011-2022 走看看