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日

相关文章

  • Win10中Edge浏览器下载出现乱码该怎么办?

    当Win10中Edge浏览器下载出现乱码时,我们可以通过以下步骤来解决: Step 1: 确认浏览器和操作系统语言设置 浏览器和操作系统的语言设置不一致,可能会导致在下载过程中出现乱码的情况。因此,我们需要确保两者的语言设置一致。 在Win10系统中,打开“设置”。 点击“时间和语言”选项。 点击“区域和语言”选项。 确认“语言”选项中的语言设置。 同样的,…

    html 2023年5月31日
    00
  • Python中json库的操作指南

    下面是详细讲解“Python中json库的操作指南”的完整攻略。 什么是JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于JavaScript语言的子集,但也可以使用其它编程语言来解析生成。JSON的特点是数据结构简单清晰,易于读写,同时也易于机器解析和生成。 JSON在Python中的操作 Py…

    html 2023年5月30日
    00
  • js使用递归解析xml

    以下是详细讲解“js使用递归解析xml”的完整攻略: 步骤一:获取XML数据 首先,你需要获取到一个XML的数据源。可以使用AJAX或其他的网络请求方式来获取XML数据。下面是一个使用AJAX获取XML数据的示例代码: function loadXMLDoc(filename) { let xhttp = new XMLHttpRequest(); xhtt…

    html 2023年5月30日
    00
  • 九元航空怎么样?九元航空是不是真的?

    九元航空怎么样?九元航空是不是真的? 九元航空是一家中国低成本航空公司,成立于2014年,总部位于成都。九元航空的主要经营范围是国内航线,目前已经开通了包括北京、上海、广州、深圳、成都等在内的多个城市的航班。以下是关于九元航空的详细介绍: 九元航空的优点 价格便宜:九元航空的机票价格相对于其他航空公司来说非常便宜,可以满足一些预算有限的旅客的需求。 航班时间…

    html 2023年5月17日
    00
  • 电脑打字乱码怎么办? txt文字变乱码的解决办法

    电脑打字乱码怎么办?txt文字变乱码的解决办法 问题描述 在使用电脑打字的过程中,有时会出现乱码的情况,即在打出的文字中出现了一些奇怪的符号或变为乱码,此时无法正常阅读和编辑。这种情况在打开txt文本时也可能出现。 解决方案 出现这种情况时,我们可以采取以下几种方案: 方案一:修改编码方式 打开乱码的文本文件(如:txt文件),在左上角找到“文件”菜单,点击…

    html 2023年5月31日
    00
  • win7打开应用程序出现乱码怎么办?win7打开应用程序出现乱码解决方法

    针对“win7打开应用程序出现乱码怎么办?win7打开应用程序出现乱码解决方法”这个问题,我给出以下的完整攻略。 问题描述 当在 Windows 7 操作系统中打开某个应用程序时,突然出现了乱码的现象。这种情况可能会影响应用程序的正常使用,因此需要进行相关的解决。 可能的原因 应用程序本身出现问题; 操作系统或计算机的语言设置与应用程序不一致; 应用程序所需…

    html 2023年5月31日
    00
  • Java dom4j生成与解析XML案例详解

    Java dom4j生成与解析XML案例详解 什么是dom4j? dom4j是一个开放源代码的Java XML解析器,它基于Java标准的DOM和XPath接口,并扩展了DOM和XPath库以实现更好的性能和易用性。dom4j能够读取XML文档、遍历XML元素树、编辑XML文档并生成新的XML文档。 dom4j生成XML dom4j生成XML是指使用dom4…

    html 2023年5月30日
    00
  • 使用SyntaxHighlighter实现HTML高亮显示代码的方法

    接下来我将详细介绍如何使用SyntaxHighlighter实现HTML高亮显示代码的方法,包括必要的准备工作和步骤,以及示例说明。 准备工作 下载SyntaxHighlighter的源代码和CSS样式文件。可以从官网下载最新版本的代码,或者使用GitHub上的源代码。 将下载的代码解压缩到合适的目录中,并将CSS样式文件放到网站的样式文件夹中。 在HTML…

    html 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部