当前位置: 首页 > 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.dtcms.com/a/326658.html

相关文章:

  • day25-IO
  • gateway进行接口日志打印
  • 刘强东的AI棋局
  • 高并发内存池 内存释放回收(6)
  • 如何生成测试报告
  • 加载模型使用torch_dtype参数来显式指定数据类型
  • 美股期权历史波动率数据研究分析教程
  • 基于STM32单片机超声波测速测距防撞报警设计
  • c# 线程的基础教学(winform 电梯模拟)
  • C9800 ISSU升级
  • 【Java工具】Java-sftp线程池上传
  • ADK[5]调用外部工具流程
  • (附源码)基于Spring Boot的4S店信息管理系统 的设计与实现
  • 每日算法刷题Day61:8.11:leetcode 堆11道题,用时2h30min
  • 【功能测试】软件集成测试思路策略与经验总结
  • HTML应用指南:利用GET请求获取全国vivo体验店门店位置信息
  • 字节后端面经
  • 内网依赖管理新思路:Nexus与CPolar的协同实践
  • Linux-FTP服务器搭建
  • 【图像算法 - 12】OpenCV-Python 入门指南:图像视频处理与可视化(代码实战 + 视频教程 + 人脸识别项目讲解)
  • DHCP服务配置与管理实战指南
  • CRMEB多商户系统(Java)v2.0更新预告:区域管理+预约商品,激活本地商业新活力!
  • NTC热敏电阻、压敏电阻和保险丝工作原理
  • FFmpeg - 基本 API大全(视频编解码相关的)
  • python每日一题练习 两个数组的交集 非常简单
  • GCN: 图卷积网络,概念以及代码实现
  • 【LeetCode刷题集】--排序(三)
  • Protocol Buffers (protobuf) API 接口完全指南
  • maven项目打包成sdk后在别的项目使用
  • 从0开始的中后台管理系统-5(部门管理以及菜单管理页面功能实现)