| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> SpringBoot文件上传示例代码和过程解析 -> 正文阅读 |
|
[Java知识库]SpringBoot文件上传示例代码和过程解析 |
说明文件上传,在 PostMan 或者 ApiPost 等常用工具里面大家应该都留意过,当body是from-data(表单提交)的时候,我们可以选择文件进行上传,如下图: ?本文主要介绍的是使用SpringBoot后端接收这个文件。 代码代码非常简单,SpringBoot项目直接拷贝即可使用 需要下载源码的戳这里? ?update_demo.zip - 蓝奏云
测试使用请求发送工具发送一个请求进行测试,其中file参数选择随便选个文件测试: ?日志成功输出文件上传位置: ?查看对应目录下文件内容: ?经过测试功能正常,我们现在来看下原理。 分析DispatcherServlet首先我们打开org.springframework.web.servlet.DispatcherServlet#initStrategies 里面的第一个(图中红色方框)中的就是我们要找的方法: 可以看到对这个对象进行了初始化。 判定初始化对象之后还不够,需要确定一个请求是不是一个文件上传请求,还是这个类: ?进入这个方法: 进入到这个方法,进入到:org.springframework.web.multipart.commons.CommonsMultipartResolver#isMultipart 可以看到这个方法:org.apache.commons.fileupload.servlet.ServletFileUpload#isMultipartContent 就两个检查:检测POST 方法,判断ContentType 是multipart; 返回到刚才那个check逻辑:? ?正常都调这个方法,位置是:org.springframework.web.multipart.MultipartResolver#resolveMultipart? 这里面进行了判定是不是懒加载,实际上就是把各种需要的参数拼一拼: 官方的解释是:将给定的HTTP请求解析为多部分文件和参数,并将请求包装在一个MultipartHttpServletRequest对象中,该对象提供对文件描述符的访问,并使所包含的参数可以通过标准的ServletRequest方法进行访问。 点击来能看到基本就是获取文件信息解码啥的这堆东西了? 以上就是文件上传的处理过程 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 7:21:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |