springboot中的文件上传与下载
  9m65el8SCpbP 2023年11月02日 102 0

首先回忆一下springmvc中的文件上传

1)引入文件上传相关jar包,commons-io 、commons-fileupload

2)文件上传表单提交方式必须为post

3)要求表单的enctype属性必须为:multipart/form-data

4)后台接收文件时,使用multipartFile 变量与前端name属性值保持一致

5)在springmvc的配置文件中必须加入,且id是框架规定写死的。

  <bean  id="multipartResolver" class="CommonsMultipartResolver">

springboot中的文件上传

1)在springboot项目中,自动引入了有关文件上传的jar包 commons-io、commons-file

2)准备表单

  提交方式:post    enctype="multipart/form-data"

<form action="${pageContext.request.contextPath}/upload/test" method="post" enctype="multipart/form-data">
   <input type="file" name="fileTest"/>
   <input type="submit" value="上传"/>

</form>

3)后台控制器方法参数multipart 和 前台name属性值保持一致

 

@Controller
@RequestMapping("/upload")
public class uploadController {
    @RequestMapping("/test")
    public String upload(MultipartFile fileTest, HttpServletRequest request) throws IOException {
        //获取文件的原始名
        String filename =
fileTest.getOriginalFilename();
        System.out.println(filename);
        //根据相对路径获取绝对路径
        String realPath = request.getSession().getServletContext().getRealPath("/upload");
        fileTest.transferTo(new File(realPath,filename));
        return "success";
    }
}

4)修改springboot中默认上传文件大小(为1M)

#更改上传文件的大小上限

  http:

    multipart:

      max-file-size: 100MB        //最大上限为100MB

      max-request-size: 100MB     //最大请求上限与max-file-size保持一致

springboot中的文件下载

1)页面中提供一个下载的链接

<a href="${pageContext.request.contextPath}/download/test?fileName=idea快捷键.txt">点我下载</a>

2)开发下载文件的controller

下载文件的过程是一个读写操作,将文件读入输入流,然后通过输出流读出,读出的时候动态设置响应类型

 

@Controller
@RequestMapping("/download")
public class downloadController {
    @RequestMapping("/test")
    public void download(String fileName, HttpServletRequest
request, HttpServletResponse response) throws Exception {
        //获取文件的绝对路径
        String realPath =
request.getSession().getServletContext().getRealPath("upload");
        //获取输入流对象(用于读文件)
        FileInputStream fis = new FileInputStream(new
File(realPath, fileName));
      //获取文件后缀(.txt)
        String extendFileName =
fileName.substring(fileName.lastIndexOf('.'));
        //动态设置响应类型,根据前台传递文件类型设置响应类型
       
response.setContentType(request.getSession().getServletContext().getMimeType(extendFileName));
        //设置响应头,attachment表示以附件的形式下载,inline表示在线打开
       
response.setHeader("content-disposition","attachment;fileName="+URLEncoder.encode(fileName,"UTF-8"));
         //获取输出流对象(用于写文件)
        ServletOutputStream os =
response.getOutputStream();
      //下载文件,使用spring框架中的FileCopyUtils工具
      FileCopyUtils.copy(fis,os);
 
    }
}

 

 

参考文章:http://blog.ncmem.com/wordpress/2023/09/12/springboot中的文件上传与下载/


 

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
9m65el8SCpbP