springboot上传文件

通过我们一个web网站都需要上传文件,比如用户头像。。。。直接上干货。。。

首先我们需要创建一个HTML文件用于上传文件。。。

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

然后我们在我们的controller层添加我们的上传代码。当然一般是要封装的。


@Controller
public class FileController {
   
    //设置文件存储路径
    private static final String filePath = "C:\\Users\\LLh\\Desktop\\";
    @RequestMapping("/upload")
    @ResponseBody
    public JsonData upload(@RequestParam("head_img")MultipartFile file, HttpServletRequest request){

//        file.isEmpty();//判断图片是否为空
//        file.getSize();//图片大小进行判断

        String name = request.getParameter("name");
        System.out.println("用户名:"+name);
        //获取文件名
        String fileName = file.getOriginalFilename();
        System.out.println("上传文件名为:"+fileName);
        //获取文件的后缀名
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        System.out.println("上传的后缀名为:"+suffixName);

        //文件上传后的路径
        fileName = UUID.randomUUID()+suffixName;
        System.out.println("转化后的名称:"+fileName);
        File dest = new File(filePath+fileName);
        System.out.println("保存路径为:"+filePath+fileName);
        try{
            file.transferTo(dest);
            //MultipartFile 对象的transferTo方法,用于文件保存(效率和操作比原先用FileOutStream方便和高效)
            return new JsonData(0,fileName);
        }catch (IOException e) {
            e.printStackTrace();
        }
        return new JsonData(-1,"上传失败");
    }

}

MultipartFile 是属于springmvc的一个文件上传组件。

在上传文件后我们还遇到一个问题就是文件上传的大小的限制。这是我们应该配置一个上传文件的配置类。
在我们的启动类里面添加

 @Bean
    public MultipartConfigElement multipartConfigElement(){
        MultipartConfigFactory factory = new MultipartConfigFactory();
        //单个文件最大
        factory.setMaxFileSize(DataSize.parse("10240KB"));
        factory.setMaxRequestSize(DataSize.parse("102400KB"));
        return factory.createMultipartConfig();
    }

当然这个配置类依旧可以进行封装,我们需要封装就新建config文件夹新建配置类然后再类上面添加注解@Configuration即可

在我们打包springboot时我们还需固定文件上传的位置,在我们的application.properties文件中添加

web.upload-path=C:/Users/LLh/Desktop
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/test/,file:${web.upload-path} 

web.upload-path 不属于我们的springboot范围内,需要添加我们的映射才能使用。也就是在我们的spring.resources.static-locations= 最后面添加即可,这个也就是我们访问文件的优先顺序。

-----------------------学习笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值