(一)文件的上传
一,编写上传文件表单upoad.html
1,创建一个用于来上传文件upload.html
<!DOCTYPE html>
<html lang="en" xmlns:th="www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<!--
上传 的 三大要素
1,提交方式 POST
2,提交类型 multipart/form-data
3,组件的类型得是 file :type=file
-->
<body>
<form th:action="@{/uploadFile}" method="post" enctype="multipart/form-data">
<input type="file" name="uploadFiles"><br />
<input type="submit" name="上传">
</form>
</body>
</html>
2,在application.properties全局配置文件中添加文件上传的相关配置
# thymeleaf 相关配置
spring.thymeleaf.cache=false
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.mode=HTML
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.servlet.multipart.max-file-size=1MB
spring.servlet.multipart.max-request-size=10MB
3,在FileController类,进行文件上传处理,实现文件上传功能
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
// 文件的控制器
// 上传操作
@Controller
public class FileController {
// 1,浏览器打开访问如下的URI路径 即可到达 上传的要页面
@GetMapping("/toUploadPage")
public String toUploadPage(){
return "/upload";
}
// 2,上传网页 将内容进行上传了 本方法
@PostMapping("/uploadFile")
public String uploadFile(MultipartFile[] uploadFiles) throws IOException {
// System.out.println("files:"+uploadFiles.length);
for (MultipartFile file : uploadFiles){
// 获取上传文件名称 (文件名+ 扩展名)
String filename = file.getOriginalFilename();
// System.out.println("文件的名称是"+filename);
String dir = "D:/file/";
File f = new File(dir);
// 判断 文件是否存在? 加了一个感叹号 表示去反 | 假设为不存在该文件夹
if (!f.exists()){
f.mkdirs(); // mk是 make 的缩写 翻译为 制作 创造
}
file.transferTo(new File(dir + filename));
}
return "/upload";
}
}
4,运行DemoApplication.java
5,在网页中打开http://localhost:8080/toUploadPage
选择文件打开 提交
点击提交
上传成功到D:/file 文件中了
(二)文件的下载
1,编写上传文件表单download.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>文件下载</title>
</head>
<body>
<table border="1px">
<tr>文件下载列表</tr>
<tr>
<td>
<img src="../static/2.png" width="160px" height="200px">
<a th:href="@{/download(name='2.png')}">点我下载</a>
</td>
<td>
<img src="../static/3.jpg" width="160px" height="200px">
<a th:href="@{/download(name='3.jpg')}">点我下载</a>
</td>
<td>
<img src="../static/13224.png" width="160px" height="200px">
<a th:href="@{/download(name='13224.png')}">点我下载</a>
</td>
</tr>
</table>
</body>
</html>
2,在FileController类,进行文件下载处理,实现文件下载功能
package com.example.demo.controller;
import org.apache.commons.io.FileUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
// 文件的控制器
// 上传操作
@Controller
public class FileController {
// 1,浏览器打开访问如下的URI路径 即可到达 上传的要页面
@GetMapping("/toUploadPage")
public String toUploadPage(){
return "/upload";
}
// 2,上传网页 将内容进行上传了 本方法
@PostMapping("/uploadFile")
public String uploadFile(MultipartFile[] uploadFiles, Model model){
System.out.println("files:"+uploadFiles.length);
model.addAttribute("statues","上传成功");
for (MultipartFile file : uploadFiles){
// 获取上传文件名称 (文件名+ 扩展名)
String filename = file.getOriginalFilename();
System.out.println("文件的名称是"+filename);
String dir = "D:/file/";
File f = new File(dir);
// 判断 文件是否存在? 加了一个感叹号 表示去反 | 假设为不存在该文件夹
if (!f.exists()){
f.mkdirs(); // mk是 make 的缩写 翻译为 制作 创造
}
File uploadfile = new File(dir + filename);
System.out.println(uploadfile.getPath());
System.out.println(uploadfile.getName());
try {
file.transferTo(uploadfile);
} catch (IOException e) {
model.addAttribute("statues","上传成功");
throw new RuntimeException("失败"+e);
}
}
return "/upload";
}
@GetMapping("toDownloadPage")
public String download(){
return "download";
}
// 文件的下载
// 文件的下载
// 文件的下载
@GetMapping("download")
public ResponseEntity download(HttpServletResponse response, String name) {
String dir = "D:/file/";
File file = new File(dir + File.separator);//D:/file/2.jpg
HttpHeaders httpHeaders = new HttpHeaders();
// httpHeaders.setContentDispositionFormData("attachment",name);
response.setHeader("Content-Disposition","attachment; filename="+name);
// 设置文件内容类型
httpHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);// MediaType 媒体的类型
try {
return new ResponseEntity(FileUtils.readFileToByteArray(file), HttpStatus.OK);
} catch (IOException e) {
e.printStackTrace();
return new ResponseEntity(e.getMessage(), HttpStatus.OK);
}
}
}
3,运行
4,
转载:https://blog.csdn.net/qq_44847402/article/details/106120009
查看评论