搞定Multipart
2020-03-23 05:36:47来源:博客园 阅读 ()
搞定Multipart
从前后端解析Multipart使用方式。搞定Multipart
Multipart解决了在一个HTTP请求里存放多种数据的问题,使得在一个HTTP请求里同时传输JSON和二进制数据成为可能,因此multipart大量应用在表单中。本文尝试用最简单的方式讲解在AJAX时代的multipart实践。
HTTP请求
Multipart有几个重要的点:
- 请求的Content-Type必须为multipart/form-data,后面必须跟用于区分各个part的boundary
- 每个part以boundary开始,后面跟Content-Disposition:form-data以及part的name,以及可选的filename
- 每个part有可选的Content-Type
前端
前端可以使用FormData来表示multipart
var formData = new FormData();
formData.append("username", "Groucho");
formData.append("accountnum", 123456); // number 123456 is immediately converted to a string "123456"
// HTML file input, chosen by user
formData.append("userfile", fileInputElement.files[0]);
// JavaScript file-like object
var content = '<a id="a"><b id="b">hey!</b></a>'; // the body of the new file...
var blob = new Blob([content], { type: "text/xml"});
formData.append("webmasterfile", blob);
var request = new XMLHttpRequest();
request.open("POST", "http://foo.com/submitform.php");
request.send(formData);
后端
以应用最广泛的的Spring Boot为例。
-
可以使用
@RequestParam
或者@RequestPart
来标记multipart中的part,两者的区别是,当参数类型不是String
或者Multipart
时,@RequestParam
使用Converter
或者PropertyEditor
进行转换,而@RequestPart
使用HttpMessageConverters
进行转换。HTTPMessageConverters
依赖Content-Type
来选择converter,同时@RequestBody
也使用HTTPMessageConverters
。因此,如果参数是key=value
形式的,选择@RequestParam
,如果参数是JSON或者XML,选择@RequestPart
-
由于
HTTPMessageConverters
依赖Content-Type
,因此对于非String
/MultipartFile
/Part
类型的参数,必须在请求中指定Content-Type
,前端指定Content-Type
的方法见代码示例 -
由于自己实现
Converter
或者PropertyEditor
也是有一定代码量的,而且现在都用JSON传输数据,所以更推荐使用@RequestPart
PS:
如果您觉得我的文章对您有帮助,请关注我的微信公众号,谢谢!
原文链接:https://www.cnblogs.com/jason1990/p/12551380.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Spring生命周期详解
下一篇:Maven实现热部署需要的依赖
- 如何用Spring Boot集成Ehcache缓存,教你三招搞定 2020-05-19
- 搞定JVM基本原理和面试题,看看这几本书妥妥够了! 2020-05-18
- 搞定JVM基本原理和面试题,看看这几本书妥妥够了! 2020-05-15
- 这一份MySQL书单,可以帮你搞定90%以上的面试题! 2020-05-13
- 你真的以为计算机网络不重要吗,这份书单帮你搞定相关面试题 2020-05-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash