Spring MVC》 第九章 文件上传、下载

简介: Spring MVC》 第九章 文件上传、下载

前言

使用commons-fileupload , commons-io 工具,实现上传、下载功能

1、环境搭建

1.1、导入依赖包

<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>

1.2、配置文件

<!--配置文件上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!--设置上传文件的默认编码格式-->
    <property name="defaultEncoding" value="UTF-8"></property>
    <!--设置允许上传的最大长度-->
    <property name="maxUploadSize" value="1024000"></property>
</bean>
<!--静态资源文件路径-->
<mvc:resources mapping="/uploadfile/**" location="/uploadfile/"/>
属性 说明
defaultEncoding 上传文件的默认编码格式。
maxUploadSize 上传文件的最大长度(单位为字节)。
maxInMemorySize 读取文件到内存中的最大字节数。
resolveLazily 判断是否要延迟解析文件。

2、上传功能实现

2.1、html页面

<form th:action="@{/uploadfile}" method="post" enctype="multipart/form-data">
    <input type="file" name="file" multiple="multiple"/>
    <input type="submit" value="上传"/>
</form>

2.2、controller

@PostMapping("/uploadfile")
public String uploadfile(MultipartFile file,HttpServletRequest request){
    if(!file.isEmpty()){
        //原始文件名
        String originalFilename = file.getOriginalFilename();
        //文件扩展名
        String fileType = originalFilename.substring(originalFilename.lastIndexOf("."));
        //获取上传文件的路径
        String realPath = request.getServletContext().getRealPath("/uploadfile/");
        //创建上传文件的路径
        File f = new File(realPath);
        //判断文件夹是否存在
        if(!f.exists()){
            f.mkdir();
        }
        //上传后的文件名
        String newFileName = UUID.randomUUID() + fileType;
        //文件名传回前端
        request.setAttribute("imgPath",request.getRequestURL()+"/" + newFileName);
        try {
            //持久化文件
            file.transferTo(new File(realPath+newFileName));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return "success";
}

3、下载功能实现

@RequestMapping("/downloadFile")
public ResponseEntity<byte[]> downloadFile(HttpServletRequest request,String fileName) throws IOException {
    fileName = fileName.substring(fileName.lastIndexOf("/") + 1);
    //得到图片的实际路径
    String realFile =  request.getServletContext().getRealPath("/uploadfile/") + fileName;
    File file = new File(realFile);
    byte[] bytes = FileUtils.readFileToByteArray(file);
    //创建 HttpHeaders 对象设置响应头信息
    HttpHeaders headers = new HttpHeaders();
    //设置下载的方式和文件名称
    headers.setContentDispositionFormData("attachment",fileName);
    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    return new ResponseEntity<>(bytes, headers, HttpStatus.OK);
}
<a th:href="@{/downloadFile(fileName=${imgPath})}">下载</a>


目录
相关文章
|
2月前
|
缓存 前端开发 Java
Spring MVC 面试题及答案整理,最新面试题
Spring MVC 面试题及答案整理,最新面试题
97 0
|
2月前
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
11 0
|
2月前
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
9 0
|
2月前
|
SQL JavaScript Java
springboot+springm vc+mybatis实现增删改查案例!
springboot+springm vc+mybatis实现增删改查案例!
26 0
|
2月前
|
SQL Java 数据库连接
挺详细的spring+springmvc+mybatis配置整合|含源代码
挺详细的spring+springmvc+mybatis配置整合|含源代码
45 1
|
18天前
|
数据采集 前端开发 Java
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
23 3
|
18天前
|
存储 前端开发 Java
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
14 1
|
18天前
|
前端开发 Java Spring
数据之桥:深入Spring MVC中传递数据给视图的实用指南
数据之桥:深入Spring MVC中传递数据给视图的实用指南
31 3
|
28天前
|
前端开发 安全 Java
使用Java Web框架:Spring MVC的全面指南
【4月更文挑战第3天】Spring MVC是Spring框架的一部分,用于构建高效、模块化的Web应用。它基于MVC模式,支持多种视图技术。核心概念包括DispatcherServlet(前端控制器)、HandlerMapping(请求映射)、Controller(处理请求)、ViewResolver(视图解析)和ModelAndView(模型和视图容器)。开发流程涉及配置DispatcherServlet、定义Controller、创建View、处理数据、绑定模型和异常处理。
使用Java Web框架:Spring MVC的全面指南
|
2月前
|
敏捷开发 监控 前端开发
Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
84 0