关于Content-Type: multipart/form-data的支持
今天使用postman测试, 发现multipart/form-data的参数不支持,
postman的数据如下:
POST /dada-log-api/v1/logging/line HTTP/1.1
Host: 127.0.0.1:8380
Verification-Hash: casa
Cache-Control: no-cache
Postman-Token: 719df17f-c105-d42d-411c-876d3345c3fe
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="topic"
xx
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="logLine"
请问有办法支持?
@AdapteBy(type=UploadAdapter.class)
@wendal 真的可以✌, 请问能否加两种AdapteBy, 支持两种呢? 我还想支持application/x-www-form-urlencoded, 主要是以前用spring没有这个限制
@yzhang226 有,叫WhaleAdapter
@At("/line")
@POST
@Ok("json")
@AdaptBy(type=WhaleAdaptor.class)
public RawRespone<Integer> logLine(@Param("topic") String topic,
@Param("logLine") List<String> logLines,
HttpServletRequest req) {
multipart/form-data是可以了, 但是application/x-www-form-urlencoded参数为null
@yzhang226 debug一下Whale,理应会判断的
@wendal
adptor代码没有urlencoded的判断
String type = req.getHeader("Content-Type");
if (!Strings.isBlank(type)) {
if (type.contains("json")) { // JSON适配器
try {
return Json.fromJson(req.getReader());
} catch (Exception e) {
throw Lang.wrapThrow(e);
}
}
if (type.contains("multipart/form-data")) { // 上传适配器
FastUploading uploading = new FastUploading();
try {
return uploading.parse(req, uploadCtx);
} catch (UploadException e) {
throw Lang.wrapThrow(e);
}
}
}
return super.getReferObject(sc, req, resp, pathArgs);
- @wendal
@Param("logLine") List<String> logLines这个是list, 是不是不能注入?Map<String, String[]> params = req.getParameterMap();是有logLine的参数数据的
用数组
@Ok("json")
@At("/whale/test")
@AdaptBy(type=WhaleAdaptor.class)
public Object whaleInput(@Param("lines")String[] lines) {
return lines;
}
@wendal 换成数组之后确实可以了, 我有两个疑问:
为什么默认适配器不用Whale?
List为什么在这种情况下不能适配?而在form-data下list是可以的?
谢谢
WhaleAdaptor里面有个判断没做好, 还需要根据泛型判断一下:
if (List.class.isAssignableFrom(clazz))
return new MapListInjector(paramName);
至于为啥默认不是WhaleAdaptor,那是怕任何接口都能做文件上传了. 不过, 自行在MainModule设置为WhaleAdaptor,也就变成默认的了.
关于Content-Type: multipart/form-data的支持的更多相关文章
- org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;boundary=----WebKitFormBoundaryRAYPKeHKTYSNdzc1;charset=UTF-8' not supported
原文:https://www.cnblogs.com/yueli/p/7552888.html 最近同事在做一个图片上传功能.在入参 body 中同时传入文件和其它基本信息结果出现如题异常.在此记录下 ...
- http 请求参数之Query String Parameters、Form Data、Request Payload
Query String Parameters 当发起一次GET请求时,参数会以url string的形式进行传递.即?后的字符串则为其请求参数,并以&作为分隔符. 如下http请求报文头: ...
- html5 file upload and form data by ajax
html5 file upload and form data by ajax 最近接了一个小活,在短时间内实现一个活动报名页面,其中遇到了文件上传. 我预期的效果是一次ajax post请求,然后在 ...
- Sending forms through JavaScript[form提交 form data]
https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript As in the ...
- the request doesn't contain a multipart/form-data or multipart/form-data stream, content type header
the request doesn't contain a multipart/form-data or multipart/form-data stream, content type header ...
- org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json;charset=UTF-8' not supported或其他Content type不支持处理
很久没从头到尾搭框架,今天搭的过程中,springmvc controller方法入参用@RequestBody自动绑定参数时一直提示各种 not supported 排查问题有两个解决路径: 1)使 ...
- Web 前沿——HTML5 Form Data 对象的使用
XMLHttpRequest Level 2 添加了一个新的接口——FormData.利用 FormData 对象,我们可以通过 JavaScript 用一些键值对来模拟一系列表单控件,我们还可以使用 ...
- Sending HTML Form Data
public Task<HttpResponseMessage> PostFormData(){ // Check if the request contains multipart/fo ...
- HTML5 Form Data 对象的使用
HTML5 Form Data 对象的使用 MDN: https://developer.mozilla.org/zh-CN/docs/Web/Guide/Using_FormData_Object ...
- ✅问题:Rails.ajax的data不支持{}hash格式。必须使用string。 dataType的格式。
Rails.ajax({ url: url, type: "PATCH", data: {"post":{"category_id":thi ...
随机推荐
- Ubuntu14上安装Mongo3.2
1. 安装 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys D68FA50FEA312927 echo "deb ...
- Windows无法启动 VMware Workstation server服务解决方法
Windows无法启动VMware Workstation server服务, 可以通过删除datastores.xml文件来解决. 具体操作步骤如下: 1.在系统盘目录下,找到C:\ProgramD ...
- java——时间复杂度、动态数组
O(n)不一定小于O(n^2),要具体来看,而我们说的这种时间复杂度其实是渐进时间复杂度,描述的是n趋近于无穷的情况. 动态数组的时间复杂度: 添加操作:O(n) addLast()的均摊复杂度为O( ...
- app常见测试点
安装与卸载: ●应用是否可以在IOS不同系统版本或android不同系统版本上安装(有的系统版本过低,应用不能适配) ●软件安装后是否可以正常运行,安装后的文件夹及文件是否可以写到指定的目录里. ●安 ...
- SpringMVC什么时候配置 视图解析器
当Action返回的是一个真实路径的时候,视图解析器可不进行配置 当Action返回的是逻辑路径的时候,我们必须要在配置文件中注册视图解析器并为该逻辑路径添加前缀和后缀
- eclipse decompiler
# eclipse -> help -> eclipse marketplace # decompiler
- Murano Weekly Meeting 2015.09.15
Meeting time: 2015.September.15th 1:00~2:00 Chairperson: Serg Melikyan, PTL from Mirantis Meeting s ...
- python函数(四)
一.函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pasc ...
- jQuery源码浅析2–奇技淫巧
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
- 详细记录vue项目实战步骤(含vue-cli脚手架)
一.通过vue-cli创建了一个demo. (vue-cli是快速构建这个单页应用的脚手架,本身继承了多种项目模板:webpack(含eslit,unit)和webpack-simple(无eslin ...