CSVファイルをダウンロードさせるときに、画面タイトル(日本語)を利用したいときなど、日本語のファイル名を指定したい場合があります。
ダウンロードさせるファイル名にURLEncoder#encodeでエンコードすることで、日本語でファイル名を指定することができます。
日本語ファイル名を指定してダウンロードさせるサンプル
ダウンロードさせるファイルの中身を作成。作成した内容で、日本語のファイル名でダウンロードさせます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DownloadServlet extends HttpServlet { public static String CHARSET_UTF8 = "UTF-8"; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String dlFileName = "日本語.txt"; resp.setContentType("text/plain"); resp.setHeader("Content-Disposition","attachment;filename=\"" + URLEncoder.encode(dlFileName,CHARSET_UTF8) + "\""); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(resp.getOutputStream(),CHARSET_UTF8)); bw.write("hogehoge"); bw.flush(); bw.close(); } } |