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

如果想让 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;
    }

 报错日志

在这里插入图片描述

 

 

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Spring Boot中上传文件到指定文件夹,可以通过以下步骤实现: 1.添加依赖 在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` 2.配置文件上传路径 在application.properties或application.yml文件中添加以下配置: ```yaml # 文件上传路径 file.upload.path=/path/to/upload/folder ``` 3.编写文件上传接口 ```java @RestController public class FileUploadController { @Value("${file.upload.path}") private String uploadPath; @PostMapping("/uploadFile") public String handleFileUpload(@RequestParam("file") MultipartFile file) { if (file.isEmpty()) { return "上传失败,请选择文件"; } try { // 获取文件名 String fileName = file.getOriginalFilename(); // 获取文件后缀名 String suffixName = fileName.substring(fileName.lastIndexOf(".")); // 生成新的文件名 fileName = UUID.randomUUID() + suffixName; // 构建文件存储路径 File dest = new File(uploadPath + "/" + fileName); // 判断文件父目录是否存在 if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); } // 存储文件 file.transferTo(dest); return "上传成功"; } catch (IOException e) { e.printStackTrace(); } return "上传失败!"; } } ``` 以上代码即为文件上传的主要逻辑,其中通过@Value注解注入配置文件中的文件上传路径,然后通过MultipartFile类型的参数接收上传的文件,使用transferTo()方法将文件存储到指定路径下。 4.测试文件上传接口 使用Postman等工具测试文件上传接口,选择POST方法,以表单形式上传文件,其中file参数为要上传的文件。上传成功后,文件会存储到指定的文件夹中。 以上就是Spring Boot上传文件到指定文件夹的实现步骤,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值