如果想让 Spring Boot上传文件,上传到项目的根路径下(不是容器实例,这里很容易出错)

Spring Boot上传图片到项目根路径文件夹下 

在这里插入图片描述 

UploadUtils.java 

注意构建“图片文件夹路径” 

public class UploadUtils {

    // 项目根路径下的目录  -- SpringBoot static 目录相当于是根路径下(SpringBoot 默认) 
    public final static String IMG_PATH_PREFIX = "static/upload/imgs";

    public static File getImgDirFile(){

        // 构建上传文件的存放 "文件夹" 路径
        String fileDirPath = new String("src/main/resources/" + IMG_PATH_PREFIX);

        File fileDir = new File(fileDirPath);
        if(!fileDir.exists()){
            // 递归生成文件夹
            fileDir.mkdirs();
        }
        return fileDir;
    }
}

正确的

@ResponseBody
    @RequestMapping("/upload")
    public MsgTo upload(@RequestParam("imgFile")MultipartFile imgFile,HttpServletRequest request,HttpSession session){

        MsgTo msg = new MsgTo();
        if (imgFile.isEmpty()) {
            // 设置错误状态码
            msg.setCode(500);
            msg.setMsg("上传失败,请选择文件");
            return msg;
        }


        // 拿到文件名
        String filename = imgFile.getOriginalFilename();
        
        // 存放上传图片的文件夹
        File fileDir = UploadUtils.getImgDirFile();
        // 输出文件夹绝对路径  -- 这里的绝对路径是相当于当前项目的路径而不是“容器”路径
        System.out.println(fileDir.getAbsolutePath());

        try {
            // 构建真实的文件路径
            File newFile = new File(fileDir.getAbsolutePath() + File.separator + filename);
            System.out.println(newFile.getAbsolutePath());

            // 上传图片到 -》 “绝对路径”
            imgFile.transferTo(newFile);

            msg.setMsg("上传成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return msg;
    }

错误示范 

在构建图片File 对象时, File newFile = new File(fileDir, filename); 这种方式不行,会以容器实例的地址来上传,报错 

![2019-04-11_104223](C:\Users\hechen\Desktop\文档总结\博客\data\2019-04-11_104223.png)@ResponseBody
    @RequestMapping("/upload")
    public MsgTo upload(@RequestParam("imgFile")MultipartFile imgFile,HttpServletRequest request,HttpSession session){

        MsgTo msg = new MsgTo();
        if (imgFile.isEmpty()) {
            // 设置错误状态码
            msg.setCode(500);
            msg.setMsg("上传失败,请选择文件");
            return msg;
        }


        // 拿到文件名
        String filename = imgFile.getOriginalFilename();
        
        // 存放上传图片的文件夹
        File fileDir = UploadUtils.getImgDirFile();
        // 输出文件夹绝对路径  -- 这里的绝对路径是相当于当前项目的路径而不是“容器”路径
        System.out.println(fileDir.getAbsolutePath());

        try {
            // 这里改变图片构建方式
            File newFile = new File(fileDir, filename);
            System.out.println(newFile.getAbsolutePath());

            // 上传图片到 -》 “绝对路径”
            imgFile.transferTo(newFile);

            msg.setMsg("上传成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return msg;
    }

 报错日志

在这里插入图片描述

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐