sholler's プログラムとメモ帳

日々プログラムをしていて出てきたエラーの処理、技術関連の気になった記事などを題材に書いていくブログ。

javaServletでファイルダウンロード

javaServletを使ってファイルをクライアントにダウンドードする処理をメモ




1.動的webプロジェクトを作成
f:id:sholler:20140109162942p:plain

2.Servletを新規作成
パッケージ名とクラス名は自分で指定する
今回は「Download.java」と名付け、ダウンロードできるようにコードを書いていく。
「doGet」メソッド内に記述

private FileInputStream in;
private ServletOutputStream os;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
	// パラメータ取得2
	String fileName = request.getParameter("f");
	try{
		// コンテントタイプ設定
		response.setContentType("application/octet-stream");
		// ヘッダー設定
		response.setHeader("Content-Disposition", "filename=\"" + fileName + "\"");
		// ダウンロードファイルの読み込み倍とストリーム作成
		in = new FileInputStream(getServletContext().getRealPath("files/" + fileName));
		// レスポンス出力バイトストリームを取得
		os = response.getOutputStream();
		// データ出力
		byte[] buff = new byte[1024];
		int len = 0;
		while ((len = in.read(buff, 0, buff.length)) != -1){
			os.write(buff, 0, len);
		}
	} finally {
		// 終了処理
		if(in != null) {
			
			try{
				in.close();
			} catch(IOException e) {}
		}
		
		if(os != null) {
			
			try{
				os.close();
			} catch(IOException e){}
			
		}
	}
}


3.jspを新規作成
今回は「test.jsp」と名付け、submitボタンを作った。

<form action="Download">
	<input type="submit" name="f" value="test.mp4" />
</form>

4.ダウンロードしたいファイルを適当な位置に配置
今回は「test.mp4」をダウンロード出来るようにする。
WebContentフォルダの中に「fileフォルダ」を作成し、その中にファイルを格納。
f:id:sholler:20140109163002p:plain


これで、実際にtest.jspにアクセスしダウンロードできる様になった。


参考サイト
http://www.cozzbox.com/wordpress/archives/968
http://www.syboos.jp/java/doc/file-download-by-servlet.html