CXF Attachment接受文件流 (解决)
来源:互联网 发布:淘宝交换笔记本主板的 编辑:程序博客网 时间:2024/05/16 12:58
CXF文件上传解决 (解决一下问题)
org.apache.cxf.interceptor.Fault: Invalid URL encoding: not a valid digit (radix 16): -17
java.lang.RuntimeException: Invalid URL encoding: not a valid digit (radix 16): -17
(CXF+Spring 的配置这里就不叙述了)
代码如下
前段代码
后端接口:
@POST@Path("/uploadCrawler")@Consumes({ MediaType.MULTIPART_FORM_DATA })boolean uploadCrawler(@Multipart(value = "<span style="color:#FF0000;">files</span>") Attachment file,@FormParam("crawlerName") String crawlerName, @FormParam("remark") String remark);
遇到问题情况:
前期由于不懂。input 文件域 的name属性是自己定义的,然后@Multipart(value = "files")也是自己定义的,然后就会出现以上问题,通过大牛的知道,对源码的调试,可以看出 input的name属性必须为 files,这样CXF才不会将其变为String,才不会出现以上问题。
源码一下:(org.apache.cxf.jaxrs.utils.FormUtils)
private static final String MULTIPART_FORM_DATA_TYPE = "form-data"; private static final String MAX_FORM_PARAM_COUNT = "maxFormParameterCount"; private static final String CONTENT_DISPOSITION_FILES_PARAM = "files";
public static void populateMapFromMultipart(MultivaluedMap<String, String> params, MultipartBody body, Message m, boolean decode) { List<Attachment> atts = body.getAllAttachments(); checkNumberOfParts(m, atts.size()); for (Attachment a : atts) { ContentDisposition cd = a.getContentDisposition(); if (cd != null && !MULTIPART_FORM_DATA_TYPE.equalsIgnoreCase(cd.getType())) { continue; } String cdName = cd == null ? null : cd.getParameter("name"); String contentId = a.getContentId(); String name = StringUtils.isEmpty(cdName) ? contentId : cdName.replace("\"", "").replace("'", ""); if (StringUtils.isEmpty(name)) { throw ExceptionUtils.toBadRequestException(null, null); } if (CONTENT_DISPOSITION_FILES_PARAM.equals(name)) { // this is a reserved name in Content-Disposition for parts containing files continue; } try { String value = IOUtils.toString(a.getDataHandler().getInputStream()); params.add(HttpUtils.urlDecode(name), decode ? HttpUtils.urlDecode(value) : value); } catch (IllegalArgumentException ex) { LOG.warning("Illegal URL-encoded characters, make sure that no " + "@FormParam and @Multipart annotations are mixed up"); throw ExceptionUtils.toInternalServerErrorException(ex, null); } catch (IOException ex) { throw ExceptionUtils.toBadRequestException(null, null); } } }
0 0
- CXF Attachment接受文件流 (解决)
- Attachment
- Attachment
- Apache CXF REST 文件上传,中文乱码(已解决)
- attachment和inline的区别 下载文件
- 服务端接受文件流并处理
- WebClient上传文件Jsp接受文件流数据
- WebClient上传文件Jsp接受文件流数据
- 解决attachment; filename含空格时显示不完全的问题
- 文件上传后台接受
- ubuntu主机配置FTP后解决无法接受文件上传的问题
- 解决recvfrom阻塞接受问题
- 文件下载:"Content-disposition","attachment; filename=中文名>>>解决方案
- 文件下载:"Content-disposition","attachment; filename=中文名>>>解决方案
- 文件下载:"Content-disposition","attachment; filename=中文名>>>解决方案
- 文件下载:"Content-disposition","attachment; filename=中文名>>>解决方案
- 文件上传Content-disposition中Attachment和inline的区别
- cxf 上传文件
- 关于LeetCode中Implement Stack using Queues一题的理解
- CSS3的loader加载动画
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) D. Delivery Bears 二分+网络流(循环写二分,否则T。。。)
- 如何利用迅雷下载百度云获取实际下载地址
- spring mvc 配置 log4j
- CXF Attachment接受文件流 (解决)
- 自用零散博文-interfaces.ts
- 机器学习常见算法及原理总结(干货)
- 第三周 项目2-建设“顺序表”算法库
- HTPPSQS的学习总结
- 获取各种时间
- light oj 1078 - Integer Divisibility (取模运算)
- POJ 1077 Eight 八数码 DBFS
- 九度+大数运算+Java直接调用BigInteger,注意必须定义的是Main类OJ才过