Tomcat7读取URL编码的POST参数

Tomcat7读取URL编码的POST参数,post,parameters,tomcat7,Post,Parameters,Tomcat7,您好,我正在尝试使用HTML表单将二进制数据上传到使用POST的REST服务。 我使用下面的javascript snipplet发送二进制数据 xhr.open("POST", "http://localhost:8080/SomeRESTServices/rest/fileupload"); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.send("file="+ encodeUR

您好,我正在尝试使用HTML表单将二进制数据上传到使用POST的REST服务。 我使用下面的javascript snipplet发送二进制数据

xhr.open("POST", "http://localhost:8080/SomeRESTServices/rest/fileupload");
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send("file="+ encodeURIComponent(evt.target.result) );
encodeURIComponent对文件的所有内容进行编码

在Tomcat端,我接收编码的二进制数据。就像这样:

file=Hello%20man%20什么是%20%0A%0A%0A正在等待%20%0A%23%0A%0A%0A%0A%0A on。%0A%0A

所以我现在的问题是。我必须自己解码二进制数据吗?或者可以在Tomcat7服务器上为我这样做?我在Tomcat服务器的server.xml中读了一些关于URICoded POST参数和设置的帖子

我在server.xml中设置了URIEncoding=“UTF-8”useBodyEncodingForURI=“true”,但它没有改变任何东西


我不确定这是解码POST参数的正确方法。

URIEncoding
仅适用于查询字符串
useBodyEncodingForURI=“true”
将使用请求正文编码来解码查询字符串。也不是你想要的


浏览器应该(但很少)指定通过POST提供的表单数据的编码。如果在调用request.getParameter()之前调用request.setCharacterEncoding()(或者在调用参数时触发读取的任何其他方法),则Tomcat将使用首选编码对参数进行解码。如果不设置,Tomcat将使用ISO-8859-1。

感谢您的澄清。作为Tomcat行为的补充参考: