Java 如何避免在HttpServletRequest中过滤文件名
我的文件名是abc#123.pdf,它通过连接到url传递到服务器端 在服务器端,我使用此行获取文件名。但只获取“abc”,过滤#之后的字符串。我怎样才能避免这种情况Java 如何避免在HttpServletRequest中过滤文件名,java,spring-mvc,servlets,httprequest,Java,Spring Mvc,Servlets,Httprequest,我的文件名是abc#123.pdf,它通过连接到url传递到服务器端 在服务器端,我使用此行获取文件名。但只获取“abc”,过滤#之后的字符串。我怎样才能避免这种情况 fileName=request.getParameter(文档名称) 发生这种情况是因为URL中#之后的任何内容都被视为URL的引用部分。在将查询参数发送到服务器端时,需要对其进行编码。如果您使用的是javascript,那么可以执行以下操作 var myUrl = "http://example.com?documentNam
fileName=request.getParameter(文档名称) 发生这种情况是因为URL中#之后的任何内容都被视为URL的引用部分。在将查询参数发送到服务器端时,需要对其进行编码。如果您使用的是javascript,那么可以执行以下操作
var myUrl = "http://example.com?documentName=" + encodeURIComponent("abc#123.pdf");
在java端,使用以下代码获取参数
encodeFileName = request.getParameter(DOCUMENT_NAME);
您可以使用URLDecker对值进行解码
String fileName = java.net.URLDecoder.decode(encodeFileName, "UTF-8");
请确保在javascript中使用encodeURI组件,如果使用encodeURI,它将不会对#进行编码。客户端应编码此参数,然后服务器应使用URLDecoder.decode对其进行解码