您好我正在尝试使用POST将使用HTML表单的二进制数据上传到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端,我收到编码的二进制数据。那样:
文件=你好%20man%20what%图20是%20%0A 0A%%0Agoing%20%0A%23%0A 0A%0A%%0Aon。%0A 0A%
现在我的问题是。我必须自己解码二进制数据吗?或者可以为我做tomcat 7服务器?我在Tomcat服务器的server.xml中阅读了一些关于URIEncoded POST参数和设置的帖子。
我在server.xml中设置了URIEncoding =“UTF-8”useBodyEncodingForURI =“true”,但它没有改变任何内容。
我不确定这是解码POST参数的正确方法。
答案 0 :(得分:1)
URIEncoding
仅适用于查询字符串。 useBodyEncodingForURI="true"
将使用请求正文编码来解码查询字符串。也不是你想要的。
浏览器应该(但很少)指定通过POST提供的表单数据的编码。如果在调用request.getParameter()(或任何其他触发参数读取的方法)之前调用request.setCharacterEncoding(),则Tomcat将使用您的首选编码对参数进行解码。如果您不设置它,Tomcat将使用ISO-8859-1。