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日

相关文章

  • java使用jaxb操作xml示例

    Java使用JAXB(Java Architecture for XML Binding)操作XML,可以在Java对象和XML之间进行快速、方便的转换。下面是使用JAXB操作XML的完整攻略。 基础准备 使用JAXB需要按照以下步骤进行准备: 1. 引入JAXB依赖 在Maven项目中,需要在pom.xml文件中添加以下依赖: <dependency…

    html 2023年5月30日
    00
  • html文档基本结构(制作网页基础知识)

    HTML文档是构建网页的基础,下面我将详细讲解HTML文档的基本结构。 HTML文档的基本结构 HTML文档有一个基本的结构,主要由 Doctype、HTML标签、Head标签、Body标签等几个部分组成。 1、Doctype 声明 一个HTML文档通常都会以一个Doctype声明开头,声明文档类型和版本。Doctype声明的目的是帮助浏览器正确地呈现网页内…

    html 2023年5月30日
    00
  • 震旦打印机打印word文档内容出现乱码怎么办?

    震旦打印机打印word文档内容出现乱码怎么办? 如果使用震旦打印机打印Word文档时出现了乱码,可能的原因是打印机未正确识别文档编码或打印机字体不支持所需的字符。 解决方案 以下是多种可能的解决方案: 1. 修改文档编码 打开Word文档,点击“文件”->“选项”->“高级”。 在“版式和缩放”选项卡中找到“文档内容”一栏,选择“使用下列字符集”…

    html 2023年5月31日
    00
  • hbuilderx怎么折叠其他项目?hbuilderx折叠其他项目方法

    以下是关于HBuilderX折叠其他项目的攻略: HBuilderX怎么折叠其他项目? HBuilderX是一款跨平台的前端开发工具,支持多种编程语言和框架。在HBuilderX中,您可以通过折叠其他项目来更好地管理您的项目。以下是详细的攻略: 打开项目:首先,打开您的项目,进入项目文件夹。 折叠其他项目:在项目文件夹中,右键单击要折叠的项目,然后选择“折叠…

    html 2023年5月17日
    00
  • HTML name、id、class 的(格式/应用场景/特性)等区别介绍

    接下来是关于HTML name、id、class 的区别介绍。 HTML name、id、class 的格式 name name 属性需要在被命名的 HTML 元素中定义,其语法格式为: <tag name="value">…</tag> 其中,tag 为标签名,name 为属性名,value 为属性值。 id…

    html 2023年5月30日
    00
  • js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)

    JS解析XML字符串和XML文档的实现原理主要包括两个步骤:将XML字符串解析成XML文档;通过XPath语法解析XML文档中的节点和属性信息。本文将详细讲解这两个步骤,并提供IE和火狐两种实现方式的示例代码。 将XML字符串解析成XML文档 将XML字符串解析成XML文档是解析XML数据的第一步,一些常见的解析方式包括使用DOMParser对象和Activ…

    html 2023年5月30日
    00
  • Scratch3.0中文版怎么下载安装?Scratch3.0新手入门使用教程

    以下是“Scratch3.0中文版怎么下载安装?Scratch3.0新手入门使用教程”的完整攻略: Scratch3.0中文版怎么下载安装?Scratch3.0新手入门使用教程 Scratch是一款非常流行的编程教育软件,可以帮助用户学习编程知识和提高编程能力。下面是Scratch3.0中文版的下载安装和新手入门使用教程。 步骤1:下载Scratch3.0中…

    html 2023年5月18日
    00
  • SAPIEN PrimalXML注册机使用教程 附激活补丁下载

    下面是详细讲解“SAPIEN PrimalXML注册机使用教程 附激活补丁下载”的完整攻略。 简介 SAPIEN PrimalXML是一款XML文件编辑器,是Windows平台上的一款工具软件。如果想要永久使用PrimalXML的所有功能,需要购买正版的注册码。但是在互联网上,也有很多人提供注册机和激活补丁,使用这些工具可以破解PrimalXML软件,从而使…

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