ファイルダウンロードjavaコード実装

1841 ワード

昨日の夜、ファイルのアップロードを書いたので、今日はファイルのダウンロードをしたいです.ファイルのダウンロードを受け取ったら、私たちはまず考えを整理します.
ファイルのダウンロードは、サーバ(導入したプロジェクト)からリソースファイルを読み出し、responseを介してクライアントに返すことが多い.実はtomcatはすでにファイルのアップロードに対してとても良いパッケージがあって、私達はダウンロードするファイルの経路とファイルのバイトのストリームを知っているだけで簡単にファイルのダウンロードの機能を実現することができます.あまり言わないで、直接コードをつけてください.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String name = request.getParameter("filename");
		//         
		String path = request.getServletContext().getRealPath("WEB-INF/download/"+name);
		System.out.println(path);
		//     MIME  
		response.setContentType(getServletContext().getMimeType(name));
		//       ,         ,        
		response.setHeader("Content-Disposition", "attachment;filename="+name);
	
		//          
		InputStream is = new FileInputStream(path);
		OutputStream os = response.getOutputStream();
		byte[] flush = new byte[1024];
		int len = 0;
		while((len = is.read(flush))!=-1){
			os.write(flush,0,len);
			os.flush();
		}
		is.close();
	}

中にはファイルのダウンロード方法もあり、泥棒は簡単です.直接ハイパーリンクでファイルを指定し、クライアントがファイルをクリックすると自動的にダウンロードされます.しかし、ブラウザが認識するファイルであれば、ダウンロードせずにブラウザが直接開くという弊害もある.コードは次のとおりです.

	ハイパーリンクによるダウンロード
みの !

最後にもう一つ言いますが、私は上記のコードを実現する過程で、本当にいくつかの問題に遭遇しました.インストールしたばかりのtomcatの多くの構成が変更されていないため、パス読み取りエラーが発生しました.実は理由は簡単です.配置されたプロジェクトはtomcatではなく、eclipseの.metadata.pluginsorg.eclipse.wst.server.coreディレクトリの下にあります.実は、eclipseの導入経路でも間違いはありませんが、誰が本人を不注意と呼んでいますか.downloadのフォルダディレクトリはwebContentの下にありません.
はい、言う問題も問題ではありませんが、自分の小さな問題でtomcatの構成の詳細を知ることができて、収穫があります.皆さんもこの文章を読んでから収穫があることを願っています.もし何か問題があれば、一緒に検討して、みんなで進歩してほしいです.