如何避免在HttpServletRequest中过滤文件名

时间:2017-07-05 14:51:54

标签: java spring-mvc servlets httprequest

我的文件名是abc#123.pdf,它通过将其连接到网址传递给服务器端。

在服务器端,我使用此行来获取文件名。但只有#" abc",#过滤后的字符串。我怎么能避免这个?

fileName = request.getParameter(DOCUMENT_NAME);

1 个答案:

答案 0 :(得分:4)

这是因为URL中的#之后的任何内容都被视为URL的引用部分。您需要在将查询参数发送到服务器端时对其进行编码。如果您使用的是javascript,则可以执行以下操作。

var myUrl = "http://example.com?documentName=" + encodeURIComponent("abc#123.pdf");

在获取带有以下代码的参数

之后的java端
encodeFileName = request.getParameter(DOCUMENT_NAME);

您可以使用URLDecoder解码该值。

String fileName = java.net.URLDecoder.decode(encodeFileName, "UTF-8");

确保在javascript中使用encodeURIComponent,如果使用encodeURI则不会编码#。