我的文件名是abc#123.pdf,它通過連接到url傳遞給服務器端。如何避免文件名在HttpServletRequest中被過濾
在服務器端,我使用這一行來獲取文件名。但只得到「abc」,#後面的字符串被過濾。我怎樣才能避免這種情況?
fileName = request.getParameter(DOCUMENT_NAME);
我的文件名是abc#123.pdf,它通過連接到url傳遞給服務器端。如何避免文件名在HttpServletRequest中被過濾
在服務器端,我使用這一行來獲取文件名。但只得到「abc」,#後面的字符串被過濾。我怎樣才能避免這種情況?
fileName = request.getParameter(DOCUMENT_NAME);
發生這種情況是因爲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,它不會編碼#。
它正在工作。謝謝。 –
客戶端應該對這個參數進行編碼,然後服務器應該使用URLDecoder.decode對它進行解碼。 – VitalyZ