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

SpringBoot-Web开发之文件上传

页面表单

  • enctype:encode type,编码类型
  • multipart/form-data是指表单数据有多部分构成,既有文本数据,又有文件等二进制数据,支持多类型文件上传,图片音频等
  • 默认情况下,enctype的值是application/x-www-form-urlencoded,只能上传文本格式的文件
<form method="post" action="/upload" enctype="multipart/form-data"><!-- 单文件选择--><input type="file" name="file"><br><!-- 多文件选择--><input type="file" name="photos" multiple><br><input type="submit" value="提交">
</form>

处理方法

//MultipartFile 自动封装上传过来的文件
@PostMapping("upload")
public String upload(@RequestParam("email")String email,@RequestParam("username")String username,@RequestPart("headerImg")MultipartFile headerImg,@RequestPart("photos")MultipartFile[] photos) throws IOException {log.info("上传的信息:email={},username={},headerImg={},photos={}",email,username,headerImg.getSize(),photos.length);if (!headerImg.isEmpty()) {//保存文件,例如OSS服务器(阿里云对象存储服务器)String headerImgName=headerImg.getOriginalFilename();headerImg.transferTo(new File("D:\\aaa\\admin\\" + headerImgName));}if (photos.length > 0) {for (MultipartFile photo : photos) {String photoName=photo.getOriginalFilename();photo.transferTo(new File("D:\\aaa\\admin\\" + photoName));}}log.info("上传完成================================");return "main";
}

修改默认配置

spring:servlet:multipart:max-file-size: 10MB # 单个上传文件大小上限max-request-size: 100MB # 一次请求上传所有文件大小上限

文件上传执行步骤

1. 自动配置好了 StandardServletMultipartResolver 【文件上传解析器】

3. doDispatch()查找controller目标方法之前,都会检查当前请求是否是文件上传

4. 检查请求

  • 使用文件上传解析器判断(isMultipart)
  • 封装(resolveMultipart,返回MultipartHttpServletRequest)文件上传请求

5. 参数解析器来解析请求中的文件内容封装成MultipartFile

  • 将request中文件信息封装为一个Map;MultiValueMap<String, MultipartFile>

http://www.dtcms.com/a/520702.html

相关文章:

  • 5.2 类
  • 厦门协会网站建设电影网站做淘客
  • 网站建设介绍书如何注销公司流程及费用
  • 阿里国际站网站建设wordpress mysql 扩展
  • LeetCode 405 - 数字转换为十六进制数
  • 漳州做网站喊多少钱wordpress栏目更改无法显示
  • 集团公司网站欣赏如何做企业网站内链
  • 未来的 AI 操作系统(九)——灵魂架构:当智能系统拥有“自我”
  • 卡码网语言基础课(Python) | 20.排队取奶茶
  • ManySpeech —— 使用 C# 开发人工智能语音应用
  • 5G-A 与 5G 对比
  • 网站建设与 宣传关系wordpress 订单
  • Linux进程信号(贰):保存信号
  • 互联网站建设 天津台州网站建设惠店
  • 基于Python大数据的主流汽车价格分析可视化系统
  • Flutter状态管理原理详解
  • 如何选择网站项目企业营销推广怎么做
  • MCP Server 启动和应用
  • C语言通过函数实现素数验证
  • 软件无线电关键技术--基带QPSK 调制技术
  • Linux网络——应用层序列化反序列化
  • EWCCTF2025 Tacticool Bin wp
  • 【Trae+AI】和Trae学习搭建App_01(附加可略过):测试Trae的后端功能
  • 网站源码 下载查域名价格
  • 上海做网站联系电话山东兴华建设集团有限公司网站
  • 使用 Vue3 和 Element Plus 实现选择新增用户集下拉选项框,切换类型,有物业,网格,电子围栏,行政区划管理
  • Vue项目页面间,页面中跳转及刷新规划,何时使用router-view,router-link,iframe,slots ,使用场景,及对应场景的完整使用示例
  • 【Qt】VS Code配置Qt UI插件,vscode打开Qt Designer ,vscode打开Qt*.ui文件
  • 服务网站建设的公司安装网站系统
  • 直播做网站数字广东网络建设有限公司介绍