SpringBoot 文件上传与下载——单文件、多文件、大文件分片

发布时间:2026/10/14 3:51:07
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/爬虫 实战干货不让你白来。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询