关于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"
请问有办法支持?
加了@AdpateBy注解没?
@wendal 加哪一个AdpateBy??
@yzhang226
@AdapteBy(type=UploadAdapter.class)
@wendal 真的可以✌, 请问能否加两种AdapteBy, 支持两种呢? 我还想支持application/x-www-form-urlencoded, 主要是以前用spring没有这个限制
@yzhang226 有,叫WhaleAdapter
@wendal 说错,Whale是支持3种,普通表单,json,文件上传
UploadAdapter同时支持普通和文件上传的
越说越乱。。。。
用Whale就是了
@wendal
@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 application/x-www-form-urlencoded时, req.getParameterMap()
有数据, 但是没有注入
@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,也就变成默认的了.
@wendal 真的而是万分感谢, 完美解决了我的问题
转载于:https://www.cnblogs.com/telwanggs/p/7803540.html
关于Content-Type: multipart/form-data的支持相关推荐
- HttpMediaTypeNotSupportedException:Content type 'multipart/form-data;boundary=W10Jdm..'not supported
最近在做一个excel导入的功能.在入参 body 中同时传入文件和其它基本信息结果出现如题异常.在此记录下解决办法.以做记录. org.springframework.web.HttpMediaTy ...
- message: Content type 'multipart/form-data;boundary=----WebKitFormBoundaryksbSBUwTCB6eHI3j;charse
postman 发送post请求出现错误:"message": "Content type 'multipart/form-data;boundary=----WebKi ...
- 报错Content type ‘multipart/form-data;boundary=----WebKitFormBoundaryTz0sivpVO7U0H70m;charset=UTF-8‘ n
最近在做一个图片上传,遇到这了这种情况,在入参 body 中同时传入文件和其它参数信息结果出现如题异常. 特别在此记录解决办法,以供大家参考. method="post"必须事po ...
- Content type 'multipart/form-data;boundary=--------------------------496238283102520395700876;解决方案
Content type 'multipart/form-data;boundary=--------------------------496238283102520395700876;解决方案 在 ...
- Content type 'multipart/form-data;boundary=--------------------------258075776767858126421870;chars
记录一下小错误,今天用postman测试添加接口时报错,想传一个实体到接口,便选了一个Headers Body使用form-data 便出现了标题的错误 "msg": " ...
- Content type 'multipart/form-data;boundary=----WebKitF;charset=UTF-8' not supported
springboot后台接收文件和对象的时候,会报Content type 'multipart/form-data;boundary=----WebKitF;charset=UTF-8' not s ...
- Content type ‘multipart/form-data;boundary=解决方案
记录一个小问题 今天在用postman调试接口,发送请求的时候没进入断点就报错" Content type 'multipart/form-data;boundary=----------- ...
- 上传文件.HttpMediaTypeNotSupportedException:Content type ‘multipart/form-data;
org.springframework.web.HttpMediaTypeNotSupportedException:Content type 'multipart/form-data;boundar ...
- 1. 恼人的Multipart form data
文章目录 1. 概述 2. 问题 3. 解决方案 3.1 解决方案一 3.2 解决方案二 3.3 解决方案三 4. 总结 1. 概述 我目前在公司负责开放平台项目,使用spring-cloud-gat ...
- 上传文件报错:Content type ‘multipart/form-data;boundary=----WebKitFormBoundarypJygPIIxqzTHmtkQ;charset=...
@ReponseBody不支持form-data,所以要接收带有文件的form-data有3种方式. 方式一: @PostMapping("upload") public Stri ...
最新文章
- Graph2Vec在XFL论文中提及的用处
- 配置深度学习环境的重要资料
- 多核导航模块(Multicore Navigator)
- C++文件打开模式详解
- Vue表单类的父子组件数据传递示例_vue.js_脚本之家
- java遍历Set集合
- Windows Embedded CE 6.0开发初体验(五)构建CE平台
- 2020阿里云双12-企业飞天会员年终盛典全攻略
- TiDB 部署及数据同步
- AWS ECS简单了解
- EditPlus 使用技巧集萃(转)
- ef设置非自增长id_Ef core 如何设置主键
- k8s api文档 调用heapster metrics
- 2006年,谁是我们的博客之星?
- websocket 压测工具 有哪些_性能测试总结(概念amp;流程amp;工具)
- scrum敏捷开发流程介绍和心得
- 计算机二级文档技巧,计算机二级选择题技巧
- 【BP数据预测】基于matlab天牛须算法优化BP神经网络数据预测【含Matlab源码 1316期】
- 微信营销怎么做,5中常见运作模式解析
- HDOJ - 2371 矩阵乘法