尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
SpringBoot 文件上传与下载——单文件、多文件、大文件分片
文件上传下载是 Web 项目中的高频需求——用户头像、合同附件、产品图片。这篇讲 SpringBoot 中文件上传下载的完整实现包含单文件、多文件、大文件分片上传等场景。一、配置1. 文件上传配置spring:servlet:multipart:enabled:truemax-file-size:10MB# 单个文件最大max-request-size:50MB# 总请求最大file-size-threshold:2KB# 文件大小阈值location:/tmp2. 文件存储配置ConfigurationConfigurationProperties(prefixfile)DatapublicclassFileStorageConfig{privateStringuploadDir/data/uploads;privateStringdownloadUrl/files;}二、单文件上传RestControllerRequestMapping(/file)publicclassFileController{AutowiredprivateFileStorageConfigconfig;PostMapping(/upload)publicResultVOStringupload(RequestParam(file)MultipartFilefile){if(file.isEmpty()){returnResultVO.error(400,请选择文件);}try{// 1. 生成存储文件名StringoriginalNamefile.getOriginalFilename();StringextoriginalName.substring(originalName.lastIndexOf(.));StringsaveNameIdUtil.simpleUUID()ext;// 2. 按日期分目录StringdatePathDateUtil.today();FiledirnewFile(config.getUploadDir(),datePath);if(!dir.exists())dir.mkdirs();// 3. 保存文件FiledestnewFile(dir,saveName);file.transferTo(dest);// 4. 返回可访问路径Stringurlconfig.getDownloadUrl()/datePath/saveName;returnResultVO.success(url);}catch(IOExceptione){returnResultVO.error(500,上传失败);}}}三、多文件上传PostMapping(/uploads)publicResultVOListStringuploadMultiple(RequestParam(files)MultipartFile[]files){ListStringurlsnewArrayList();for(MultipartFilefile:files){// 逐个上传urls.add(upload(file));}returnResultVO.success(urls);}四、文件下载GetMapping(/download/{datePath}/{fileName})publicvoiddownload(PathVariableStringdatePath,PathVariableStringfileName,HttpServletResponseresponse){FilefilenewFile(config.getUploadDir(),datePath/fileName);if(!file.exists()){response.setStatus(404);return;}response.setContentType(application/octet-stream);response.setHeader(Content-Disposition,attachment;filenameURLEncoder.encode(fileName,UTF-8));Files.copy(file.toPath(),response.getOutputStream());} 觉得有用的话点赞 关注【张老师技术栈】吧每周更新 Java/Python/爬虫 实战干货不让你白来。
RELATED

相关推荐

Tesseract 5.5.2 与 OpenCV 4.9 图像预处理实战:验证码识别率从 30% 提升至 85%

Tesseract 5.5.2 与 OpenCV 4.9 图像预处理实战:验证码识别率从 30% 提升至 85%

Tesseract 5.5.2 与 OpenCV 4.9 图像预处理实战:验证码识别率从 30% 提升至 85% 1. 验证码识别的核心挑战 验证码识别一直是OCR领域的难点问题。传统Tesseract直接处理验证码时,识别率往往不足30%,主要面临以下挑战: 噪声干扰 …

📅 2026/7/11 4:40:03
抖店订单备注太多怎么管理一件代发特殊要求如何避免漏处理

抖店订单备注太多怎么管理一件代发特殊要求如何避免漏处理

抖店订单备注太多怎么管理?一件代发特殊要求如何避免漏处理 一件代发订单里,经常会出现各种备注:指定快递、不要放小票、改地址、延迟发货、颜色备注、补发说明。如果订单少,人工记一下还能处理;订单多了,很…

📅 2026/7/23 5:35:04
2026在线PDF转Excel,实操指南:无水印免费、无需注册的安全转换方案

2026在线PDF转Excel,实操指南:无水印免费、无需注册的安全转换方案

2026 年日常办公、财务统计、数据整理场景中,经常需要把报表、单据类 PDF 文件转为可编辑 Excel 表格,在线网页工具、微信小程序、电脑本地内置功能是三类主流处理路径。本篇整合多款实测可用工具,覆盖在线 PDF 转 Excel 无水印网站、免费转换…

📅 2026/7/12 18:32:39
MORE NEWS

更多资讯

📰

AI智能体基础设施搭建:Python+FastAPI+PostgreSQL实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

rustc 错误码(Error Codes)体系解析:从分配新 E 代码到诊断输出与测试验证

rustc 错误码(Error Codes)体系解析:从分配新 E 代码到诊断输出与测试验证 【免费下载链接】rust Empowering everyone to build reliable and efficient software. 项目地址: https://gitcode.com/GitHub_Trending/ru/rust rustc 为每…

📰

工业时序异常检测:从统计假设到设备健康状态映射

简介:本资源是一份面向Python数据科学初学者与中级开发者的异常检测实战代码包,聚焦无监督算法设计与工程实现,适用于金融风控、运维监控、IoT设备异常识别等实际场景。压缩包共3个文件(2个MATLAB格式数据集data1.mat、data2.mat用…

📰

JAVA毕业设计-基于 SpringBoot 的作业提交与批改系统的设计与实现 基于 SpringBoot 的作业批改系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

📰

JAVA毕业设计-基于 SpringBoot 的在线鲜花商城系统的设计与实现 基于 Java SpringBoot 的鲜花销售管理系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

📰

Java递归中Scanner资源管理的优化实践

1. Java递归方法中Scanner资源管理的最佳实践在Java开发中,递归算法和Scanner资源管理看似是两个独立的话题,但当它们结合在一起时,就会产生一些容易被忽视的问题。很多开发者在使用递归方法处理用户输入时,经常会遇到资源泄漏或输…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬