SpringBoot--->>>web-->>文件上传和下载

文件上传和下载

之前在SpringMvc和使用原生态Servlet时都了解过如何操作文件上传和下载,过程都比较多,基本就是写一遍以后都是复制粘贴用。而是用SpringBoot操作文件上传和下载,则会更加简单和方便。

首先创建一个文件上传的表单,需要有一个单文件上传和多文件上传。

表单里面首先声明enctype为multipart/form-data,请求方式为post,设置好接受提交参数的请求,使用了thymeleaf语法就不用写全路径,直接用thymeleaf语法写一个请求地址剩下的会由thymeleaf补全,设置好了后,在表单里面要注意的就是,多个文件上传时,设置input属性multiple,就能实现多个文件上传

<form th:action="@{/fileUp}" method="post" enctype="multipart/form-data">
    <label>用户名</label>
    <input type="text" name="username" placeholder="请输入用户名">
    <label>密码</label>
    <input type="password" name="password" placeholder="请输入密码">
  <input type="file" name="userImg" value="单个文件">
  <input type="file" name="files" value="多个文件" multiple>
  <input type="submit" name="上传">
</form>

然后在控制器中

建立一个接收POST请求的控制器方法,方法参数名一样就直接用,不一样就用注解@RequestParam,接收文件类型的参数,在SpringBoot中提供了MultipartFile类来接收,十分方便。单个文件就用单个对象接收,多个文件就用数组来接收。

在这个类里面提供了很多操作上传文件的方法,getName方法获取的是上传的文件参数name属性值,getOriginalFilename方法获取的是上传文件的真实名称。除此之外,SpringBoot提供了更加方便的操作文件的方法transferTo,能够直接将文件接收在本地指定地址中,也能通过getInputStream方法直接获取上传的文件流,爱怎么操作这个文件流都能操作

@Controller
public class FileUploadController {
​
    @RequestMapping("/upload")
    public String upload() {
        return "fileUp";
    }
​
    @PostMapping("/fileUp")
    public String fileUp(String username,
                         String password,
                         MultipartFile userImg,
                         MultipartFile[] files) throws IOException {
        System.out.println("用户名:" + username);
        System.out.println("文件名:" + userImg.getOriginalFilename());
        System.out.println("files的长度:" + files.length);
​
        userImg.transferTo(new File("D:\\Apache\\image\\" + userImg.getOriginalFilename()));
        for (MultipartFile file : files) {
            file.transferTo(new File("D:\\Apache\\image\\" + file.getOriginalFilename()));
        }
        System.out.println("success");
        return "redirect:/main";
    }
​
}

可能会出错的问题:

在SpringBoot中,由MultipartAutoConfiguration类管理文件上传。在操作中会出现文件过大报错,就能搜索这个类,在里面看见,有一个MultipartProperties配置类,点进去就能看见

@ConfigurationProperties(prefix = "spring.servlet.multipart", ignoreUnknownFields = false)

说他跟配置文件中的以前缀spring.servlet.multipart开头的配置项绑定,然后里面的属性都是设置默认文件上传大小的,那么就可以通过在application配置文件中设置

以下这两项,规定单次文件上传最大值,和总请求上传文件最大值。

spring:
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 120MB

 

然后就能看见文件们都被上传到你指定的本地位置了

以上就是文件上传和下载,SpringBoot的很方便。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值