SpringBoot中实现文件上传下载

1、文件上传

用户访问当前系统,将自己本地计算机中文件通过浏览器上传到当前系统所在的服务器过程中称之为文件的上传

文件上传: 用户将自己计算机中文件 上传到 项目所在服务器过程、文件服务器、OSS 称之为文件上传

1.1 准备上传页面

<form action="路径...." method="post" enctype="multipart/form-data">
    <input type="file" name="aa">
    <input type="submit" value="上传">
</form>
<!--
1. 表单提交方式必须是post
2. 表单的enctype属性必须为multipart/form-data
3. 后台接受变量名字要与文件选择name属性一致
-->

1.2 编写控制器

@Controller
@RequestMapping("/file")
public class FileController {
    @RequestMapping("/upload")
    public String upload(MultipartFile aa, HttpServletRequest request) throws IOException {
        String realPath = request.getRealPath("/upload");
        aa.transferTo(new File(realPath,aa.getOriginalFilename()));//文件上传
        return "index";
    }
}

1.3 修改文件上传大小

#上传时出现如下异常:  上传文件的大小超出默认配置      默认10M
nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (38443713) exceeds the configured maximum (10485760)
#修改上传文件大小:
spring:
  http:
    multipart:
       max-request-size: 209715200  #用来控制文件上传大小的限制
       max-file-size: 209715200 #用来指定服务端最大文件大小   

spring.servlet.multipart.max-file-size=500MB
spring.servlet.multipart.max-request-size=500MB

2、文件下载

文件下载: 将服务器某个资源文件下载到用户本地计算机过程称之为文件下载

2.1 提供下载文件链接

<a href="../file/download?fileName=corejava.txt">corejava.txt</a>

2.2 开发控制器

@RequestMapping("/download")
public void download(String fileName, HttpServletRequest request, HttpServletResponse response) throws Exception {
    String realPath = request.getRealPath("/upload");
    FileInputStream is = new FileInputStream(new File(realPath, fileName));
    ServletOutputStream os = response.getOutputStream();
    response.setHeader("content-disposition","attachment;fileName="+ URLEncoder.encode(fileName,"UTF-8"));
    IOUtils.copy(is,os);
    IOUtils.closeQuietly(is);
    IOUtils.closeQuietly(os);
}
最后修改:2021 年 10 月 19 日 12 : 22 AM
如果觉得我的文章对你有用,请随意赞赏