关于“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技术站