springboot 中文件上传下载实例代码

关于“springboot 中文件上传下载实例代码”,我们可以从以下几个方面进行介绍和实例演示:

一、上传文件实例代码

1.1 添加依赖

在 pom.xml 文件中添加如下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- 文件上传 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

<!-- 文件处理 -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
</dependency>

1.2 编写控制器

在项目中编写控制器,用于实现文件上传功能,具体代码如下:

@Controller
public class FileController {

    // 上传页面
    @GetMapping("/upload")
    public String uploadPage() {
        return "upload";
    }

    // 上传文件处理
    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file,
                             RedirectAttributes redirectAttributes) {

        // 文件上传
        try {
            FileUtils.copyInputStreamToFile(file.getInputStream(),
                    new File("D:/upload/", file.getOriginalFilename()));
        } catch (IOException e) {
            e.printStackTrace();
            redirectAttributes.addFlashAttribute("msg", "文件上传失败!" + e.getMessage());
        }

        redirectAttributes.addFlashAttribute("msg", "文件上传成功!");

        return "redirect:/upload";
    }
}

以上代码中的 FileUtils 类来自于 commons-io 依赖包,用于文件处理相关的操作。

1.3 编写上传页面

resources/templates 此路径下新建 upload.html 文件,代码如下:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>文件上传测试</title>
</head>
<body>
<h2>文件上传测试</h2>
<form th:action="@{/upload}" method="post" enctype="multipart/form-data">
    <input type="file" name="file"/><br/><br/>
    <input type="submit" value="上传文件"/>
</form>

<p th:text="${msg}"></p>
</body>
</html>

以上代码中,使用了 post 方法提交表单,在 file 表单项中指定上传的文件,通过 msg 来回传上传结果。

二、下载文件实例代码

2.1 编写控制器

在项目中编写控制器,用于实现文件下载功能,具体代码如下:

@Controller
public class DownloadController {

    // 下载页面
    @GetMapping("/download")
    public String downloadPage() {
        return "download";
    }

    // 下载请求处理
    @GetMapping("/downloadFile")
    public ResponseEntity<Resource> downloadFile(@RequestParam("fileName") String fileName)
            throws IOException {

        // 设置文件路径
        String filePath = "D:/upload/" + fileName;
        Path path = Paths.get(filePath);
        Resource resource = new UrlResource(path.toUri());

        // 判断文件是否存在
        if (resource.exists() && resource.isReadable()) {
            return ResponseEntity.ok()
                    .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + fileName)
                    .body(resource);
        } else {
            throw new RuntimeException("文件不存在或无法读取!");
        }
    }
}

以上代码中,通过访问路径 downloadFile?fileName=xxx 来获取需要下载的文件名,并返回文件以供用户下载。

2.2 编写下载页面

resources/templates 此路径下新建 download.html 文件,代码如下:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>文件下载测试</title>
</head>
<body>
<h2>文件下载测试</h2>

<a href="#" th:each="file : ${files}" th:href="@{downloadFile(fileName=${file})}">
    <span th:text="${file}"></span>
    <br/>
</a>

</body>
</html>

以上代码中,使用了 th:each 标签来遍历文件列表,通过 th:href 属性来指定下载链接,并将文件名传入控制器进行下载操作。

至此,关于“springboot 中文件上传下载实例代码”的详细介绍和演示就结束了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot 中文件上传下载实例代码 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • mybatis中xml之trim属性说明

    MyBatis 是一款优秀的 ORM 框架,支持将 SQL 语句映射到 XML 文件中,而 XML 文件中的 SQL 语句又包含了很多属性进行配置。其中之一就是 <trim> 标签。 <trim> 标签 <trim> 标签用于在 SQL 语句中动态添加或删除一些字符串。它可以设置以下属性: prefix:在 <tri…

    html 2023年5月30日
    00
  • 四个常见html网页乱码问题及解决办法

    以下是“四个常见html网页乱码问题及解决办法”的攻略: 一、乱码问题简介 在各种网页编码标准的支持下,目前我们所使用的网站基本上可以在任何设备上正常显示。但是在有些情况下,网页的内容在浏览器上展示的时候出现了乱码。接下来,本文将对几个常见的HTML网页乱码问题进行说明,并提供解决这些问题的具体方法。 二、常见的四个HTML乱码问题 1.网页中文乱码 中文乱…

    html 2023年5月31日
    00
  • 详解mybatis @SelectProvider 注解

    Mybatis是一款流行的ORM框架,使得开发者可以使用Java编程语言操作数据库,而不需要编写冗长的SQL语句。 Mybatis还提供了一些注解,允许开发者在Java接口中直接使用可读性更高的注解,以及一些组合的注解来执行数据库操作。其中@SelectProvider是一个能够帮助生成可定制化的SQL语句和动态参数的注解。 什么是@SelectProvid…

    html 2023年5月30日
    00
  • SQLServer2005 XML数据操作代码

    以下是SQL Server 2005 XML 数据操作的完整攻略。 SQL Server 2005 XML 数据操作 将 XML 数据插入到数据库中 在 SQL Server 中,可以通过 INSERT INTO 语句将 XML 数据插入到数据库中。 首先,需要在数据库中创建一个表,该表包含一个 XML 类型的列,其语法如下: CREATE TABLE my…

    html 2023年5月30日
    00
  • mysql字符集乱码问题解决方法介绍

    下面是针对“mysql字符集乱码问题解决方法介绍”的完整攻略。 问题描述 在使用mysql时,有时会出现字符集乱码的问题,这会导致数据插入、查询、显示等操作出现异常。这种问题一般是由于mysql的字符集设置和实际数据字符集不一致造成的。如果你遇到了这种问题,下面的攻略可以帮助你解决。 解决方法 1. 确认mysql字符集设置 首先,我们需要确认mysql的字…

    html 2023年5月31日
    00
  • Android开发艺术探索学习笔记(七)

    《Android开发艺术探索学习笔记(七)》讲解了Android中的消息机制和异步消息处理。以下是完整攻略: 消息机制 什么是消息机制 消息机制是Android中的一种跨进程通信方式,主要利用了Handler和Message两个类。Handler是应用程序中处理消息的主要工具,它可以接收和处理异步消息,从而在UI线程中进行更新UI界面,而Message是消息…

    html 2023年5月30日
    00
  • nice软件怎么用?nice新手使用教程详解

    以下是“nice软件怎么用?nice新手使用教程详解”的完整攻略: nice软件怎么用? nice是一款视频剪辑软件,可以通过以下步骤使用: 下载并安装nice软件:在官网或应用商店下载并安装nice软件。 打开nice软件:在电脑或手机上打开nice软件。 导入视频:在nice软件中,点击“导入”按钮,选择需要剪辑的视频。 剪辑视频:在nice软件中,可以…

    html 2023年5月18日
    00
  • HTML注释的写法(附带示例)

    HTML注释是一种特殊的语法,它通常被用于在HTML文档中注释一些内容。在网页开发中,注释是一种非常有用的方式,可以让其他的开发者和自己更好地理解文档结构,也方便我们在调试代码时做一些标注。 以下是HTML注释的写法和示例: 注释单行内容 注释单行内容的方法是在要注释的内容前加上“”符号。注意,注释符号中间不要加空格。 <p>这是一个段落<…

    Web开发基础 2023年3月15日
    00
合作推广
合作推广
分享本页
返回顶部