SpringBoot如何实现文件上传功能
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了SpringBoot如何实现文件上传功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。经典的文件上传服务器处理上传文
千家信息网最后更新 2026年11月01日SpringBoot如何实现文件上传功能
这篇文章主要介绍了SpringBoot如何实现文件上传功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
经典的文件上传
服务器处理上传文件一般都是先在请求中读取文件信息,然后改变名称保存在服务器的临时路径下,最后保存到服务器磁盘中。本次以thymeleaf搭建demo,因此需要引入thymeleaf依赖库。
org.springframework.boot spring-boot-starter-thymeleaf 2.5.5
如果使用的是gradle构建的项目,需要修改build.gradle文件:
compile 'org.springframework.boot:spring-boot-starter-thymeleaf:2.5.5'
新建一个Action类负责处理上传的文件:
@RestController@RequestMapping("/upload/*")public class UploadAction { @PostMapping("/file") public Object uploadHandler(HttpServletRequest request, String title, MultipartFile file) { Map resultMap = new LinkedHashMap<>(); resultMap.put("title", title); resultMap.put("fileName", file.getName()); // 文件名 resultMap.put("originalFilename", file.getOriginalFilename()); // 原始名称 resultMap.put("content-type", file.getContentType()); // 文件类型 resultMap.put("fileSize", file.getSize() / 1024 + "K"); // 文件大小 try { // 保存文件 String uploadedFilePath = saveFile(request, file.getInputStream(), file.getOriginalFilename() .substring(file.getOriginalFilename().lastIndexOf(".") + 1)); resultMap.put("uploadedFilePath", uploadedFilePath); // 文件大小 } catch (IOException e) { System.err.println("error-path: /upload/file, message: " + e.getMessage()); } return resultMap; } /** * 保存上传的文件到本地服务器 * * @param request HttpServletRequest * @param input 输入流 * @param ext 文件扩展名 * @return 文件路径 * @throws IOException */ public String saveFile(HttpServletRequest request, InputStream input, String ext) throws IOException { String realPath = request.getServletContext().getRealPath("/upload/file/"); // 取得服务器真实路径 File file = new File(realPath); if (!file.getParentFile().exists()) { // 目录不存在 file.mkdirs(); // 创建多级目录 } String filePath = realPath + UUID.randomUUID() + "." + ext; // 取的文件输出流 OutputStream out = new FileOutputStream(filePath); byte[] data = new byte[2048]; // 缓冲数组2KB int len = 0; // 读取字节长度 while ((len = input.read(data)) != -1) { out.write(data, 0, len); // 文件写入磁盘 } if (input != null) { input.close(); } out.close(); return filePath; }} 在resources目录下新建templates文件夹,在里面创建index.html文件作为项目首页展示。
文件上传测试
启动项目,直接访问:http://localhost:8080/将进入index.html页面。

点击上传按钮,文件将被保存到服务器磁盘中:

SpringBoot对上传文件处理的简化
SpringBoot对FileUpload组件进行了整合,在文件保存的时候可以避免直接操作IO流,通过配置文件的方式指定文件上传的限制参数。修改application.yml文件:
server: port: 8080spring: servlet: multipart: enabled: true # 启用文件上传 max-file-size: 1MB # 单文件上传最大限制 max-request-size: 10MB # 文件上传最大值 file-size-threshold: 10KB # 上传文件达到多大时写入磁盘 location: / # 临时文件存储位置
修改UploadAction,使用MultipartFile类的transferTo方法保存上传文件。
@RestController@RequestMapping("/upload/*")public class UploadAction { @PostMapping("/file") public Object uploadHandler(HttpServletRequest request, String title, MultipartFile file) { Map resultMap = new LinkedHashMap<>(); resultMap.put("title", title); resultMap.put("fileName", file.getName()); // 文件名 resultMap.put("originalFilename", file.getOriginalFilename()); // 原始名称 resultMap.put("content-type", file.getContentType()); // 文件类型 resultMap.put("fileSize", file.getSize() / 1024 + "K"); // 文件大小 try { // 保存文件 String etc = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1); String serverPath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/file/upload/"; String fileName = UUID.randomUUID() + "." + etc; resultMap.put("filePath", serverPath + fileName); // 文件地址(服务器访问地址) // 文件保存再真实路径下 File saveFile = new File(request.getServletContext().getRealPath("/file/upload/") + fileName); if (!saveFile.getParentFile().exists()) { // 目录不存在,创建目录 saveFile.mkdirs(); } file.transferTo(saveFile); // 保存上传文件 } catch (IOException e) { System.err.println("error-path: /upload/file, message: " + e.getMessage()); } return resultMap; }} 访问:http://localhost:8080/
点击上传按钮:
在浏览器上访问filePath,可以预览上传的文件:
感谢你能够认真阅读完这篇文章,希望小编分享的"SpringBoot如何实现文件上传功能"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
文件
服务器
服务
目录
磁盘
篇文章
路径
名称
大小
项目
处理
功能
原始
最大
地址
按钮
文件名
类型
限制
价值
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
工业互联网科技新基建
互联网最新的科技有限公司
远信互联网科技
浩特互联网科技
一五八零互联网科技
互联网科技创新企业排名
开启互联网科技时代小说
互联网科技产品
江苏南京365互联网科技
互联网和黑科技的看法
互联网科技产业特征
广州市恰铎互联网科技有限公司
广西互联网科技孵化中心
西安小鹰速贷互联网科技有限公司
南博望互联网科技有限公司
卓翼科技产业互联网合作
上海钢联属于互联网科技股吗
智帮互联网科技公司最近动向
宁波跨境商互联网科技有限公司
华人运通互联网科技公司
互联网科技工作委员会
北京互联网科技
平安科技 互联网
互联网科技的英文
互联网科技logo
互联网科技素材视频竖屏
互联网科技教育视频
科技赋能视角下互联网保险发展
杭州披云加互联网科技有限公司
互联网安防科技感