私はこのコードを持っています:
resp.addHeader("Content-Disposition", "inline; filename=" + fileName);
ファイル名が「a_b_c.doc」または「abc.doc」の場合、ダウンロードしたファイル名が正しく表示されます。ただし、ファイル名が「abc.doc」の場合、ダウンロードされるファイル名は「a」のみとなります。
どうすればこれを解決できますか?
引用符を使用:
resp.addHeader("Content-Disposition", "inline; filename=\"" + fileName + "\"");
HTTP 標準に従って、文字列を二重引用符で囲み、単一のバックスラッシュを前に付けて、引用符またはバックスラッシュをエスケープします。
Content-Disposition: attachment; filename="Very \"interesting\" file \\ files.txt"
これにより、名前を付けて保存するように求められますVery "interesting" file \ files.txt
。バックスラッシュの存在はフォルダーを示唆するものではなく、バックスラッシュがファイル名の一部であることを示唆することに注意してください (これは Linux やその他のプラットフォームでは完全に有効ですが、Windows では有効ではありません)。
ファイル名を引用するとうまくいきますchr(34)
:
resp.addHeader("Content-Disposition", "inline; filename=" + chr(34) + fileName + chr(34));