加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

axis2 form upload file 异常 Invalid UTF-8 middle byte

发布时间:2020-12-17 00:12:58 所属栏目:安全 来源:网络整理
导读:axis2 webservice 用form 表单文件上传出现如下异常 java.io.CharConversionException: Invalid UTF-8 middle byte 0x2 (at char #349,byte #-1)com.ctc.wstx.io.UTF8Reader.reportInvalidOther(UTF8Reader.java:313)com.ctc.wstx.io.UTF8Reader.read(UTF8Re
axis2 webservice 用form 表单文件上传出现如下异常
java.io.CharConversionException: Invalid UTF-8 middle byte 0x2 (at char #349,byte #-1)
	com.ctc.wstx.io.UTF8Reader.reportInvalidOther(UTF8Reader.java:313)
	com.ctc.wstx.io.UTF8Reader.read(UTF8Reader.java:204)
	com.ctc.wstx.io.ReaderSource.readInto(ReaderSource.java:84)
	com.ctc.wstx.io.BranchingReaderSource.readInto(BranchingReaderSource.java:57)
	com.ctc.wstx.sr.StreamScanner.loadMore(StreamScanner.java:992)
	com.ctc.wstx.sr.StreamScanner.getNext(StreamScanner.java:763)
	com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1995)
	com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
	org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225)
	org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:34)
	org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225)
	org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:668)
	org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214)
	org.apache.axiom.om.impl.llom.OMDocumentImpl.buildNext(OMDocumentImpl.java:153)
	org.apache.axiom.om.impl.llom.OMDocumentImpl.getFirstOMChild(OMDocumentImpl.java:242)
	org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:113)
	org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109)
	org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570)
	org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566)
	org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:188)
	org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:145)
	org.apache.axis2.transport.http.util.RESTUtil.processXMLRequest(RESTUtil.java:65)
	org.apache.axis2.transport.http.AxisServlet$RestRequestProcessor.processXMLRequest(AxisServlet.java:826)
	org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:227)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
?
解决:在WEB-INF目录下添加conf目录增加配置文件axis2.xml,axis2-1.6.2-war.zip文件war包WEB-INF目录下有此文件复制过来即可。
?
form.html文件内容如下:

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>REST Example - FileUpload</title> </head> <body> ?<h1>FileUpload</h1> ?<form name="form" method="post" enctype="multipart/form-data" action="./services/lims/upload"> ??<table> ???<tr> ????<th align="left">file name</th> ????<td><input type="text" id="fileName" name="fileName" /></td> ???</tr> ???<tr> ????<th align="left">upload file</th> ????<td><input type="file" id="uploadfile" name="uploadfile" /></td> ???</tr> ??</table>

??<br> <input type="submit" id="doUpload" name="doUpload"?value="OK" /> ?</form> </body> </html>

?

处理上传文件方法如下:

public void upload(String fileName,DataHandler uploadfile) { ??????? output(fileName,uploadfile); ??? }

?

private void output(String fileName,DataHandler dataHandler) { ??????? try { ??????????? File outFile = new File("d://DataHandler.jpg"); ??????????? FileOutputStream fileOutputStream = new FileOutputStream(outFile); ??????????? imagefile.writeTo(fileOutputStream); ??????????? fileOutputStream.flush(); ??????????? fileOutputStream.close(); ??????? } catch (IOException e) { ??????????? e.printStackTrace(); ??????? }

??? }

============================
另:附博文 http://jiangnan2112.iteye.com/blog/794177
org.springframework.web.util.NestedServletException:?Request?processing?failed;?nested?exception?is?org.apache.axiom.om.OMException:?com.ctc.wstx.exc.WstxIOException:?Invalid?UTF-8?middle?byte?0xfa?(at?char?#193,?byte?#127)??
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:488)??
?org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)??
?javax.servlet.http.HttpServlet.service(HttpServlet.java:617)?
?javax.servlet.http.HttpServlet.service(HttpServlet.java:717)?
?org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)??
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)??
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)??
?org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)??
?com.adtech.libraryunion.filter.LoginFilter.doFilter(LoginFilter.java:54)??
?
?
原因:调用接口的文件的编码方式不是UTF-8 解决:用记事本打开调用的文件,另存为UTF-8格式即可解决

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读