SpringBoot文件上传下载
SpringBoot文件 上传下载
2023-09-11 14:22:44 时间
新建springboot项目,前台页面使用的thymeleaf模板,其余的没有特别的配置,pom代码如下:
前台页面index.html,其中包含单个上传,下载,批量上传。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>单文件上传</p>
<form action="upload" method="POST" enctype="multipart/form-data">
文件:<input type="file" name="file"/>
<input type="submit"/>
</form>
<hr/>
<p>文件下载</p>
<a href="download">下载文件</a>
<hr/>
<p>多文件上传</p>
<form method="POST" enctype="multipart/form-data" action="batch">
<p>文件1:<input type="file" name="file"/></p>
<p>文件2:<input type="file" name="file"/></p>
<p><input type="submit" value="上传"/></p>
</form>
</body>
</html>
IndexController只是用来页面的跳转
package com.dalaoyang.Controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; /** * @author dalaoyang * @Description * @project springboot_learn * @package com.dalaoyang.Controller * @email yangyang@dalaoyang.cn * @date 2018/4/9 */ @Controller public class IndexController { @RequestMapping("/") public String index() { return "index"; } }
FileController,其中包含单个上传,单个下载,批量上传对应的方法
@RestController public class FileController { private static final Logger log = LoggerFactory.getLogger(FileController.class); @RequestMapping(value = "/upload") public String upload(@RequestParam("file") MultipartFile file) { try { if (file.isEmpty()) { return "文件为空"; } // 获取文件名 String fileName = file.getOriginalFilename(); log.info("上传的文件名为:" + fileName); // 获取文件的后缀名 String suffixName = fileName.substring(fileName.lastIndexOf(".")); log.info("文件的后缀名为:" + suffixName); // 设置文件存储路径 String filePath = "/Users/dalaoyang/Downloads/"; String path = filePath + fileName; File dest = new File(path); // 检测是否存在目录 if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs();// 新建文件夹 } file.transferTo(dest);// 文件写入 return "上传成功"; } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return "上传失败"; } @PostMapping("/batch") public String handleFileUpload(HttpServletRequest request) { List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file"); MultipartFile file = null; BufferedOutputStream stream = null; for (int i = 0; i < files.size(); ++i) { file = files.get(i); String filePath = "/Users/dalaoyang/Downloads/"; if (!file.isEmpty()) { try { byte[] bytes = file.getBytes(); stream = new BufferedOutputStream(new FileOutputStream( new File(filePath + file.getOriginalFilename())));//设置文件路径及名字 stream.write(bytes);// 写入 stream.close(); } catch (Exception e) { stream = null; return "第 " + i + " 个文件上传失败 ==> " + e.getMessage(); } } else { return "第 " + i + " 个文件上传失败因为文件为空"; } } return "上传成功"; } @GetMapping("/download") public String downloadFile(HttpServletRequest request, HttpServletResponse response) { String fileName = "dalaoyang.jpeg";// 文件名 if (fileName != null) { //设置文件路径 File file = new File("/Users/dalaoyang/Documents/dalaoyang.jpeg"); //File file = new File(realPath , fileName); if (file.exists()) { response.setContentType("application/force-download");// 设置强制下载不打开 response.addHeader("Content-Disposition", "attachment;fileName=" + fileName);// 设置文件名 byte[] buffer = new byte[1024]; FileInputStream fis = null; BufferedInputStream bis = null; try { fis = new FileInputStream(file); bis = new BufferedInputStream(fis); OutputStream os = response.getOutputStream(); int i = bis.read(buffer); while (i != -1) { os.write(buffer, 0, i); i = bis.read(buffer); } return "下载成功"; } catch (Exception e) { e.printStackTrace(); } finally { if (bis != null) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } } } return "下载失败"; } }
相关文章
- Springboot读取application.properties/application.yml文件的shunx
- SpringBoot 文件上传临时文件路径配置详解
- 基于SpringBoot和WebUploader实现大文件分块上传.断点续传.秒传
- 《SpringBoot揭秘:快速构建微服务体系》—第1章1.1节了解微服务
- SpringBoot整合validation校验教程
- SpringBoot上传文件 MultipartFile.getBytes 导致内存溢出
- springboot项目的maven的pom.xml文件第一行报错 Unknown Error
- SpringBoot配置图片访问404SpringBoot配置图片访问路径springboot如何访问图片
- SpringBoot + Mybatis + Druid + PageHelper 实现多数据源分页
- springboot的@Configuration文件读取static静态文件
- springBoot 自动装配,SpringBoot自动配置,SpringBoot自动加载
- springBoot thymeleaf 属性为空时报错:EL1007E
- Java学习-065-Springboot Tomcat控制台输出中文乱码(windows)
- JAVA 安装Springboot后,run as 没有 spring boot app 选项
- SpringBoot+Mybaits搭建通用管理系统实例八:系统权限控制实现
- springboot未授权漏洞(漏洞复现Springboot未授权访问及修复)
- SpringBoot - 文件上传原理
- SpringBoot之修改单个文件后立刻生效
- SpringBoot之文件上传
- springboot-集成线程池
- SpringBoot 实现文件的上传(图片、视频)的后台处理
- 分布式之---springboot+Dubbo+zookeeper
- SpringBoot设置全局上传文件路径并上传文件
- SpringBoot上传文件到Minio服务器,支持批量上传
- springboot文件上传到本地电脑,项目目录,路径保存到数据库,页面显示上传的图片
- springboot 中配置最大传输数据或上传文件的大小
- springboot配置多数据源mybatis配置失效问题