【问题标题】:how to avoid file name being filtered in HttpServletRequest如何避免在 HttpServletRequest 中过滤文件名
【发布时间】:2017-12-09 07:43:29
【问题描述】:

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

在服务器端,我使用这一行来获取文件名。但是只得到“abc”,#后面的字符串被过滤掉了。我怎样才能避免这种情况?

fileName= request.getParameter(DOCUMENT_NAME);

【问题讨论】:

  • 客户端应该对该参数进行编码,然后服务器应该使用 URLDecoder.decode 对其进行解码

标签: java spring-mvc servlets httprequest


【解决方案1】:

发生这种情况是因为 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它不会编码#。

【讨论】:

    猜你喜欢
    • 2013-06-15
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    相关资源
    最近更新 更多