SpringBoot如何实现文件上传功能
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍了SpringBoot如何实现文件上传功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。经典的文件上传服务器处理上传文
千家信息网最后更新 2026年10月31日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安全错误
数据库的锁怎样保障安全
科技股互联网
今日互联网科技
互联网科技公司税收优惠
互联网科技股票
紫鲸互联网科技
互联网科技排名
互联网科技论文
奇士达互联网科技
上海万想互联网科技
科技互联网的估值
互联网5g黑科技有哪些
中国互联网十大科技股排名
互联网科技的全部知识
怎样加入科技互联网
南京一网一红互联网科技有限公司
神州科技互联网有限公司
济南小医互联网科技有限公司招聘
上海同邻互联网科技有限公司规模
互联网科技企业商标注意事项
颐高云石互联网科技
苏州找大状互联网科技有限公司
科技与互联网发展
北京华百购互联网科技有限公司
燊美集互联网科技有限公司
企晟互联网信息科技有限公司
华夏恒生科技与互联网科技
互联网科技包装股份有限公司上市
广东鹅鹅鹅互联网科技有限公司
杭州科技互联网公司有哪些
平安好医生打造互联网科技医疗