2017-07-05 123 views
2

我的文件名是abc#123.pdf,它通過連接到url傳遞給服務器端。如何避免文件名在HttpServletRequest中被過濾

在服務器端,我使用這一行來獲取文件名。但只得到「abc」,#後面的字符串被過濾。我怎樣才能避免這種情況?

fileName = request.getParameter(DOCUMENT_NAME);

+0

客戶端應該對這個參數進行編碼,然後服務器應該使用URLDecoder.decode對它進行解碼。 – VitalyZ

回答

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,它不會編碼#。

+0

它正在工作。謝謝。 –