spring boot(23)-文件上传与下载

Spring Boot 3.x @Controller 与 @RestController 实战对比:5个场景下的选择与性能影响 本文深入对比Spring Boot 3.x中@Controller与@RestController的差异,通过5大核心场景(传统页面渲染、REST API开发、混合模式、文件处理、SSE)的实战分析,揭示性能优化策略与选型决策树。测试数据显示@RestController在高并发下性能更优,吞吐量提升38%,适合现代前后端分离架构。 阅读详情

先说上传,在Servlet3中提供了Part来简化上传功能,而在spring boot内部默认整合了Part来完成上传。

html

只需注意form要设置一个参数enctype="multipart/form-data",才能上传文件,其他不多说了。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<form method="post" action="/upload"  enctype="multipart/form-data">
	文件:<input type="file"  name="file" /><br/>
	<input type="submit" value="上传" /><br/>
</form>
</body>
</html>

控制层实现上传

以下代码即可完成上传,并且将文件保存到e盘。注意,默认每个文件不得超过1M,否则会报错。

	@PostMapping("/upload")
	//上传的文件会转换成MultipartFile对象,file名字对应html中上传控件的name
	public String test(MultipartFile file) throws IllegalStateException, IOException{
		//transferTo是保存文件,参数就是要保存到的目录和名字
		file.transferTo(new File("e:\\"+file.getOriginalFilename()));
		return "上传完毕";
	}

上面的file.getOriginalFilename(),是得到原始文件名。它还有其他一些方法,可以自己看eclipse提示。

MultipartFile对象常用方法

		System.out.println("文件类型:"+file.getContentType());	
		System.out.println("原始文件名:"+file.getOriginalFilename());
		System.out.println("文件大小:"+file.getSize());			
		System.out.println("是否为空:"+file.isEmpty());

application.properties配置

以下是默认配置,可以自行修改其中文件大小限制,上传的文件超出大小会报异常。
#单文件限制大小
spring.http.multipart.maxFileSize=1MB
#一次请求限制大小
spring.http.multipart.maxRequestSize=10MB

注意第二个参数,在html的form中可以有多个file,控制层的MultipartFile参数也可以有多个。也就是一次form提交,可以上传多个文件,第二个参数就是限制一次上传的所有文件加起来不超过10M。

文件命名

我上面代码中使用的是原始文件名,即用户上传时的命名。在实际情况下,可能多个用户上传的文件名字是一样的,这就有问题了,所以必须保证文件名的唯一性。在java中可以使用UUID.randomUUID()方法生成一个不会重复的名字,以此来命名文件。或者你的文件是和业务相关的,可以用业务id结合一些业务规则等来实现唯一命名就更好了。

用外部目录存储文件

tomcat项目可以把文件上传到tomcat项目的目录中,直接通过链接访问或下载这个文件。而spring boot项目在线上是以一个jar的形式存在的,不可能把文件上传到jar里面去。如上面我是上传在e盘中的,此时,如果想要访问或下载这个上传的文件,可以在application.properties中配置外部资源目录。

我在第4篇讲过,默认会有四个静态资源目录,以下配置的两个目录会覆盖掉四个默认目录。

#配置静态资源目录,以逗号分隔多个目录
spring.resources.static-locations=classpath:/static/,file:E:/image/
classpath:前缀不解释,static就是我在博客中一直用的静态目录,这是必须保留的。

file:前缀指硬盘上的目录,是可以在项目之外的目录。注意,必须先创建这个目录。

此时,如果将上传的文件xxx保存到E:/image/目录下,在浏览器直接通过http://localhost:8080/xxx 可以访问或下载这个文件。

【项目经验】用Spring Boot编写RESTful API (on MAC IDEA)(未完) https://study.163.com/course/courseMain.htm?courseId=1005213034 章节1 开始一个最简单的RESTful API项目 课时1 什么是RESTful API07:54 课时2 Maven简介04:46 课时3 RESTful API的Hello world06:13 课时4 一个简单的RESTful API11:0... 阅读详情

相关推荐

置顶必读(1) |《滚雪球学 Spring Boot 4.x》专栏目录导航篇(持续更新中)!

🏆 本文收录于 《滚雪球学 Spring Boot 4.x》 专栏。 本专栏面向 有一点 Java 基础,但没有系统学过 Spring Boot 的读者,采用“滚雪球式学习法”:先跑通、再理解、再重构、再上线,最终带你从第一个 Hello API 一路完成一个可部署、可监控、可扩展的后端项目。

**My Coding Family** 8万+

超详细的文件上传和下载(Spring Boot)

超详细的文件上传和下载

cV展示的学习园 3万+

计算机组成原理实验(已通关)-华中科技大学头歌Educoder(Logisim)

汉字国标码转区位码实验 汉字机内码获取实验 8位可控加减法电路设计 第2关 CLA182四位先行进位电路设计 第3关 4位快速加法器设计 第4关 16位快速加法器设计 第5关 32位快速加法器设计 第6关 5位无符号阵列乘法器设计 6位有符号补码阵列乘法器 乘法流水线设计 原码一位乘法器设计 偶校验编码设计 偶校验解码电路设计 16位海明编码电路设计 16位海明解码电路设计 海明编码流水传输实验 16位CRC并行编解码电路设计 CRC编码流水传输实验

紫荆鱼的博客 4万+

Spring Boot 集成 SFTP 文件上传和下载功能

文章目录1 摘要2 核心 Maven 依赖3 核心代码3.1 核心 SFTP 上传下载工具类3.2 SFTP 附件上传配置3.3 SFTP 附件上传与下载示例4 测试5 推荐参考资料6 本次提交记录 ​ ​ 1 摘要 在项目中附件上传和下载是一个常用的功能。可采用的方案有三种,第一种,将附件保存至应用服务器上,这一种应对少量不重要附件可以使用,但对于大量附件或者有重要附件的,不建议使用;第二种,将附件保存至专门的文件服务器上,这一种可应对大量、重要的附件,但是需要自行架设大存储空间的服务器;第三种保存至类似

Mrqiang9001 6411

Visual Studio 2022调试Godot 4 C#项目全攻略:从环境配置到断点调试

本文详细介绍了如何配置Visual Studio 2022以高效调试Godot 4 C#项目。从环境搭建、外部编辑器设置到两种核心调试模式(附加到进程与启动配置)的实战指南,帮助开发者构建无缝的工业级工作流,解决编码乱码、断点失效等常见问题,大幅提升开发与问题排查效率。

bush的博客 392

EEGNet 网络代码解析与实战复现指南

本文详细解析了EEGNet这一轻量级卷积神经网络的结构与设计思想,重点阐述了其利用深度可分离卷积高效处理脑电信号的原理。文章提供了基于PyTorch的完整代码复现指南,包括网络搭建、数据模拟、训练调试及关键参数解析,旨在帮助读者掌握EEGNet的代码复现技巧,并将其应用于脑机接口等实际场景。

honey的博客 537

java restful文件传输_Spring Boot 2.0实现基于Restful风格的文件上传与下载APIs

文件上传与下载在Web应用中是一个比较常见的功能。在本教程中,我将基于Spring 2.2.6版本实现一个基于Restful风格的文件上传与下载APIs。基于Spring Boot 2.0实战系列源码已经Push到Github仓库:https://github.com/ramostear/... 。感兴趣朋友欢迎Star/Fork。1. 环境JDK: Java 1.8Framework: Spri...

weixin_35954566的博客 640

DIY音频必备:手把手教你用AB类功放模块打造高保真桌面音响(含电路图)

本文详细指导如何利用AB类功放模块DIY高保真桌面音响,涵盖选型指南、核心元器件清单、电路搭建与焊接工艺,以及系统调试与音质优化技巧。AB类功放以其接近A类功放的音质和B类功放的效率,成为音频爱好者的理想选择,适合有一定电子基础的实践者。

weixin_42665725的博客 446

基于Spring Boot 2.0实现Rest风格的文件上传与下载APIs(附源码)

文件上传与下载在Web应用中是一个比较常见的功能。在本教程中,我将基于Spring 2.2.6版本实现一个基于Restful风格的文件上传与下载APIs。 基于Spring Boot 2.0实战系列源码已经Push到Github仓库:https://github.com/ramostear/springboot2.0-action。感兴趣朋友欢迎Star/Fork。 1. 环境 J...

树下魅狐 1272

MEMS传感器技术深度解析:从原理到未来趋势的全面指南(智能驾驶赛道有戏)

在智能汽车每秒产生1GB数据的今天,在可穿戴设备厚度突破1毫米的极限挑战下,MEMS(微机电系统)传感器正以的三大核心优势,重塑着人类感知世界的方式。作为从业10年的MEMS工程师,我见证了这个领域从实验室走向量产的完整历程——从2005年汽车安全气囊中笨重的压阻式加速度计,到2025年智能手机中集成5种传感器的SoC芯片,MEMS技术正在书写传感器行业的摩尔定律新篇章。本文将带您穿透技术迷雾,深入解析MEMS传感器的技术密码,涵盖,并附独家整理的与。文末更提供,助您把握万亿级市场机遇。

优快云-新能源汽车研发测试专业博主 2302

VTK API 详解(134):vtkOBJWriter - 写入 OBJ 模型

是 VTK 中用于将数据写入 Wavefront OBJ 文件格式的类。OBJ 格式是广泛支持的 3D 网格模型格式,支持顶点、面和基本几何信息的保存,便于模型在多种三维软件间交换。

yumeiguo的博客 140

SpringBoot 2.0实现基于Restful风格的文件上传与下载

点击上方☝码猿技术专栏轻松关注,设为星标!及时获取有趣有料的技术文件上传与下载在Web应用中是一个比较常见的功能。在本教程中,我将基于Spring 2.2.6版本实现一个基于Restfu...

码猿技术专栏 854

三维重建(十三)——多视角重建

本文综述了多视角三维重建技术,涵盖静态和动态场景的重建方法。介绍了从图像获取到纹理映射的SFM流程,以及非刚性重建(NRSFM)的挑战和解决方案。重点探讨了基于可微渲染的重建方法,以及数据采集策略、相机标定和同步技术。文章还讨论了如何用单视角相机模拟多视角重建,总结了关键技术和未来研究方向。

河海大学研究生在读的学习笔记 1059

SpringBoot整合 MultipartFile实现文件上传与下载

一、前言文件上传与下载是 Web 系统中最常见的应用功能,比如用户头像的上传、Excel 文件的导入和导出等。我们通过SpringBoot整合MultipartFile可以很方便的实现文件的上传和下载。二、项目实践1.引入相关依赖登录后复制 <dependency> <group...

cnzzs的博客 1122

咨询进阶——解读40页公司战略解码方法【附全文阅读】

战略解码是将企业战略转化为可执行计划的关键过程,强调垂直和水平一致性原则。通过KPI指标设计和目标分解,确保战略在各部门和岗位有效落地。解码过程包括战略澄清、目标牵引、绩效分解和承诺签订,输出战略解码图等文件。不同部门根据责任定位(如利润中心、绩效中心)采用差异化考核方式,实现战略有效执行。

cdfunlove的博客 150

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

使用SpringBoot优雅的实现文件上传

还在为如何上传文件的代码而苦恼?这篇文章告诉你如何使用SpringBoot、Mybatis-plus和hutool工具类实现文件上传。

Baridhu的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Spring Boot 实现文件上传,下载

Spring Boot 实现文件上传,下载 1、 创建Spring Boot项目 2、 创建FileController.java import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org....

记录一下🐎👩‍🌾的学习历程 392

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

multipartfile上传文件大小限制_Spring Boot 2.0实现Rest风格的文件上传与下载APIs(附源码)...

Spring Boot 2.0 Restful Style MultipartFile Upload and Download APIs文件上传与下载在Web应用中是一个比较常见的功能。在本教程中,我将基于Spring 2.2.6版本实现一个基于Restful风格的文件上传与下载APIs。基于Spring Boot 2.0实战系列源码已经Push到Github仓库:https://github.c...

weixin_42303721的博客 3042

java 知识点 23(spring的点点滴滴、spring boot上传下载、redis、gradle项目管理工具、java版本问题)

文章目录1、spring的点点滴滴1.1、Spring IOC1.2、Spring AOP1.3、BeanDefinition2、spring boot2.1、上传附件 1、spring的点点滴滴 1.1、Spring IOC IOC容器:就是具有依赖注入功能的容器。Spring中BeanFactory是IOC容器的实际代表者。 1.2、Spring AOP AOP:面向切面编程,动态代理 OOP:面向对象编程 OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需

这里的分享,都是干货 602

java文件clear_Spring Boot 2.0实现基于Restful风格的文件上传与下载APIs

> 文件上传与下载在Web应用中是一个比较常见的功能。在本教程中,我将基于Spring 2.2.6版本实现一个基于Restful风格的文件上传与下载APIs。 > > 基于Spring Boot 2.0实战系列源码已经Push到Github仓库:https://github.com/ramostear/springboot2.0-action 。感兴趣朋友欢迎Star/Fork。...

weixin_31856441的博客 125

SpringBoot(企业级文件上传下载管理系统)

企业级个人文件上传下载管理系统

led1114的博客 2909

e盾服务端源码_Spring Boot 2.0实现Rest风格的文件上传与下载APIs(附源码)

Spring Boot 2.0 Restful Style MultipartFile Upload and Download APIs文件上传与下载在Web应用中是一个比较常见的功能。在本教程中,我将基于Spring 2.2.6版本实现一个基于Restful风格的文件上传与下载APIs。基于Spring Boot 2.0实战系列源码已经Push到Github仓库:https://github.c...

weixin_39915721的博客 91

spring boot集成MongoDb存储文档

spring boot集成MongoDb存储文档

qq_43420577的博客 859

TDengine 的 Go 版 SQL 解析与 Fuzz 测试体系:sqlparse 解析器与 tdsqlsmith 稳定性测试引擎实战

TDengine 采用 C 语言 + Lemon 解析器生成器(`contrib/lemon/`)实现其 SQL 语法(`contrib/lemon/sql.y` 及其派生语法),而在开源仓库的 [test/go-sql-fuzz-test](https://link.gitcode.com/i/f6091e55864c2ac9e59eb736b0678ea1) 目录下,维护着一套完整的 **Go

gitblog_00369的博客 1018

安卓上传文件源码_基于Spring Boot 2.2.6实现Rest风格的文件上传&下载APIs-附源码

Spring Boot 2.0 Restful Style MultipartFile Upload and Download APIs文件上传与下载在Web应用中是一个比较常见的功能。在本教程中,我将基于Spring 2.2.6版本实现一个基于Restful风格的文件上传与下载APIs。基于Spring Boot 2.0实战系列源码已经Push到Github仓库:https://github.c...

weixin_39750410的博客 135
上一篇: centos(8)-权限
下一篇: centos(9)-PATH环境变量
free_java
博客等级 码龄10年 664粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值