当前位置: 首页 > news >正文

Spring Boot文件上传功能实现详解

一、文件上传核心实现
// PersonController.java
@PostMapping("/excelUpload")
public Result excelUpload(@RequestParam("uploadExcel") MultipipartFile multipartFile) {// 1. 获取原始文件名String fileName = multipartFile.getOriginalFilename();// 2. 构建存储路径Path path = Paths.get(excelpath + fileName);System.out.println("文件保存路径: " + path);// 3. 保存文件到服务器try {multipartFile.transferTo(path);} catch (IOException e) {e.printStackTrace();}// 4. 返回成功响应return Result.ok().put("data", fileName);
}
二、关键技术组件解析
  1. MultipartFile接口

    • Spring提供的文件上传处理接口

    • 核心方法:

      • getOriginalFilename(): 获取原始文件名

      • transferTo(): 将文件保存到指定位置

      • getInputStream(): 获取文件输入流

  2. 文件路径配置

    • # application.properties
      file-upload.url=D:/javacode/community_vue/community/FileXls/

       

    • 通过@Value注解注入配置路径

      @Value("${file-upload.url}")
      private String excelpath;

    • 路径处理工具

      • Paths.get(): 构建平台无关的文件路径

      • transferTo(): 将上传文件保存到指定位置

三、静态资源映射配置
// WebMvVCconfigruation.java
@Configuration
public class WebMvVCconfigruation implements WebMvcConfigurer {@Value("${file-upload.url}")private String excelPath;@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {// 映射/FileXls/**到本地文件系统registry.addResourceHandler("/FileXls/**").addResourceLocations("file:" + excelPath);}
}
四、完整上传流程
五、前端调用示例
<!-- HTML表单 -->
<form action="/sys/person/excelUpload" method="post" enctype="multipart/form-data"><input type="file" name="uploadExcel" accept=".xls,.xlsx"><button type="submit">上传Excel</button>
</form><!-- AJAX调用 -->
<script>
function uploadExcel(file) {const formData = new FormData();formData.append('uploadExcel', file);fetch('/sys/person/excelUpload', {method: 'POST',body: formData}).then(response => response.json()).then(data => {console.log('上传成功:', data.data);// 访问上传的文件: http://localhost:8080/FileXls/filename.xls});
}
</script>
六、中文文件名乱码
// 在application.properties中添加
spring.servlet.encoding.force=true
spring.servlet.encoding.charset=UTF-8
七、大文件上传优化
// 分块上传处理
@PostMapping("/chunkUpload")
public Result chunkUpload(@RequestParam Chunk chunk) {// 实现分片合并逻辑
}

完整实现代码已包含在提供的Java文件中,通过结合Controller层的上传处理和MVC配置层的静态资源映射,实现了完整的文件上传和访问解决方案。

http://www.xdnf.cn/news/1280629.html

相关文章:

  • DNS(域名系统)
  • cesium/resium 修改子模型材质
  • 第5节 大模型分布式推理通信优化与硬件协同
  • typecho博客设置浏览器标签页图标icon
  • 标准io(1)
  • MySQL中GROUP_CONCAT函数的使用详解
  • 机器翻译:一文掌握序列到序列(Seq2Seq)模型(包括手写Seq2Seq模型)
  • ssh 远程连接加密算法报错
  • MyBatis执行器与ORM特性深度解析
  • 十二、Linux Shell脚本:正则表达式
  • 导入CSV文件到MySQL
  • 打破内网枷锁!TRAE SOLO + cpolar 让AI开发告别“孤岛困境”
  • 腾讯 iOA 测评 | 横向移动检测、病毒查杀、外设管控、部署性能
  • 浏览器CEFSharp+X86+win7 之 测试抖音小店订单抓取(八)
  • 运动规划实战案例 | 基于多源流场(Flow Field)的路径规划(附ROS C++/Python实现)
  • Nmap 渗透测试弹药库:精准扫描与隐蔽渗透技术手册
  • Qt串口通信设计指南:通信层架构与实践
  • [go] 命令模式
  • 【软考架构】主流数据持久化技术框架
  • android 换肤框架详解1-换肤逻辑基本
  • 2025第十六届蓝桥杯大赛青少组省赛C++真题(初级组和中级组)
  • 数学建模——灰色预测(GM11)
  • 北京JAVA基础面试30天打卡07
  • HTTPS的应用层协议
  • react+vite-plugin-react-router-generator自动化生成路由
  • 安全等级认证系列 | 星环ArgoDB获CC EAL2安全认证,数据安全实力获国际认可
  • Linux入门DAY21
  • 用 Python 绘制企业年度财务可视化报告 —— 从 Excel 到 9 种图表全覆盖
  • 读《精益数据分析》:媒体内容平台全链路梳理
  • 低延迟RTSP|RTMP视频链路在AI驱动无人机与机器人操控中的架构实践与性能优化