私のファイル名は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を使用している場合は、次の操作を行うことができます。 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でを使用していることを確認してください。
でデコードする必要があります。ありがとう。 –
クライアントはこのパラメータをエンコードし、サーバーはURLDecoder.decode – VitalyZ