2017-07-05 8 views
2

私のファイル名はabc#123.pdfで、これをURLに連結してサーバー側に渡します。HttpServletRequestでフィルタリングされているファイル名を避ける方法

サーバー側では、この行を使用してファイル名を取得します。しかし、 "abc"しか得られません。#がフィルタリングされた後の文字列です。どうすればこれを避けることができますか?

fileName = request.getParameter(DOCUMENT_NAME);

+0

クライアントはこのパラメータをエンコードし、サーバーはURLDecoder.decode – VitalyZ

答えて

4

これは、URLの#の後の部分がURLの参照部分として考慮されるためです。あなたはサーバー側にそれを送信しながらクエリパラメータをエンコードする必要があります。 JavaScriptを使用している場合は、次の操作を行うことができます。 Java側で

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

コード

encodeFileName = request.getParameter(DOCUMENT_NAME); 

と次のようにパラメータを取得した後、あなたはURLDecoderのを使用して値をデコードすることができます。

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

は、あなたはそれが#を符号化しないだろうencodeURIを使用する場合は、JavaScriptでencodeURIComponentでを使用していることを確認してください。

+0

でデコードする必要があります。ありがとう。 –

関連する問題