当我request.getParameter( "filename" )
在GWT中调用HttpServletRequest时遇到了一个问题。这是我如何编码URL的代码:
String sFile = URL.encodeQueryString( "°^!§$%()=`´' glassfish +~#'@€-_²³.pdf" );
String sURL = GWT.getModuleBaseURL() + "filehttpservice" // name of the httpservlet
+ "?filename=" + sFile; // the name of the file to download
Window.open( sURL, "_blank", sFeatures ); // sFeatures are some window-settings
因此,我想下载名称中包含一些特殊字符的文件。URL编码的名称是:
%C2%B0%5E!%C2%A7%24%25()%3D%60%C2%B4'%20glassfish%20%2B~%23'%40%E2%82%AC-_%C2%B2%C2%B3.pdf
这是正确的,因为我可以使用该名称直接在浏览器中调用该文件。
因此,当请求到达HttpServlet的get-Method时,我想使用以下代码从其参数中提取文件名:
request.setCharacterEncoding( "UTF-8" );
String sFilename = request.getParameter( "filename" );
但是收到的文件名是:
°^!§$%()=`´' glassfish +~#'@â¬-_²³.pdf
这是完全错误的。
我已经搜索了很长时间,并尝试了服务器解决方案,但是它什么都没有改变。有人知道我如何接收正确的文件名吗?
request.setCharacterEncoding( "UTF-8" );
对没有影响doGet()
。在doGet()
queryString中,容器到达之前要对其进行解析doGet()
。
您应该使用doPost
和request.getInputStream()
解析queryString
自己。并且不要request.getParameter()
在此之前使用,request.getInputStream()
否则将无法使用。
默认情况下,编辑Java会String
以utf-16
..编码,因此您必须将其转换为utf-8
。
response.setHeader( "Content-Disposition", new String("attachment; filename=\"" + sUrlFilename + ".pdf" + "\"".getBytes("utf-8"),"ISO-8859-1") );
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句