最初の方法:
1つの 公共HttpServletResponseのダウンロード(文字列パス、HttpServletResponseの応答){ 2 のtry { 3 // パスは、ダウンロードするファイルへのパスを指します。 4 ファイルファイル= 新しい新しいファイル(パス); 5 // ファイル名を取得します。 6 文字列filename = file.getName(); 7 // サフィックスは、原稿を得ました。 8 文字列EXT = filename.substring(filename.lastIndexOf()+ 1。 "" ).ToUpperCase(); 9 10 // ダウンロードファイルのストリーム。 11 入力ストリームFIS = 新しい新しい BufferedInputStreamを(新しい新規のFileInputStream(パス))。 12 バイト []バッファ= 新しい バイト[fis.available()]。 13 fis.read(バッファ) 14 fis.close()。 15 // 清空応答 16 response.reset()。 17 // ヘッダー的设置応答 18 response.addHeader(; +の"Content-処分"、 "ファイル名=添付ファイル" 新しい文字列(filename.getBytes())); 19 response.addHeader( "コンテンツ長"、 "" + file.length())。 20 のOutputStream toClient = 新たなBufferedOutputStream(response.getOutputStream())。 21 response.setContentType(「アプリケーション/オクテットストリーム」)。 22 toClient.write(バッファ) 23 toClient.flush()。 24 toClient.close()。 25 } キャッチ(のIOExceptionのEX){ 26 ex.printStackTrace(); 27 } 28 リターン応答。 29 } 30 31 公共 ボイド downloadLocal(HttpServletResponseの応答)をスローにFileNotFoundException { 32 // 下载本地文件 33 文字列filename = "Operator.doc" .toStringを()。//保存するファイルのデフォルト名 34 // ストリーム読み出さ 35 、InputStreamであるinStreamは= 新しい新規のFileInputStream(「C:/Operator.docを」); // ファイルパスを格納する 36 // フォーマットされた出力 37 response.reset(); 38であります response.setContentType( "ビン" ); 39 Response.AddHeader( "コンテンツの廃棄"、 "添付ファイル、ファイル名= \" "+ fileNameに+" \ "" ); 40の // サイクル抜き出しストリームデータ 41は、 バイト [] = B 新しい新しい バイト [100 ]; 42である INT LEN、 43は、 トライ{ 44であり 、一方((LEN = inStream.read(B))が> 0 ) 45 。response.getOutputStream()(B、0書き込み、LEN)を、 46 inStream.close()。 47 } キャッチ(IOExceptionを電子){ 48 e.printStackTrace(); 49 } 50 } 51 52 公共 ボイド downloadNet(HttpServletResponseの応答)がスローでMalformedURLExceptionを{ 53 // 下载网络文件 54 INT bytesum = 0 。 55 INT byteread = 0 。 56 57 URLのURL = 新しいですURL( "windine.blogdriver.com/logo.gif" ); 58 59 のtry { 60 URLConnectionのCONN = url.openConnection()。 61 、InputStreamであるinStream = conn.getInputStream()。 62 のFileOutputStream FS = 新たFileOutputStream( "C:/abc.gif" )。 63 64 バイト []バッファ= 新しい バイト [1204 ]; 65 int型の長さ。 66 ながら(!(byteread = inStream.read(バッファ))= -1 ){ 67 bytesum + = byteread。 68 System.out.println(bytesum)。 69 fs.write(バッファ、0 、byteread)。 70 } 71 } キャッチ(にFileNotFoundException電子){ 72 e.printStackTrace(); 73 } キャッチ(IOExceptionを電子){ 74 e.printStackTrace(); 75 } 76 }
第二の方法:
1つの 公共 ボイドダウンロード(文字列filePathに、HttpServletResponseの応答、ブール isOnLine)をスロー例外{ 2 ファイルf = 新しいファイル(除いたファイルパスを指定して)。 3 であれば(!f.exists()){ 4 response.sendError(404、 "ファイルが見つかりません!" )。 5 リターン; 6 } 7 にBufferedInputStream BR = 新しい BufferedInputStreamを(新規のFileInputStream(F))。 8 バイト [] BUF = 新しい バイト [1024 ]; 9 int型0 = LEN ; 10 。11 response.reset(); // 非常に重要 12は、 IF(IsOnlineが){ // 開きオンライン実施例 13である URL = U 新しい新しい URL( "ファイル:///" + filePathに); 14 response.setContentType( u.openConnection()のgetContentType());. 15 response.setHeader( "コンテンツの廃棄"、 "インライン;ファイル名=" + f.getName()); 16 // 。ファイル名がUTFに8でエンコードされなければならない 17。 } 他 { // 純粋なダウンロードモード 18である response.setContentType( "ファイルアプリケーション/ X-msdownload" ) 。19 response.setHeader( "コンテンツの廃棄"、 "添付ファイル;ファイル名=" + f.getName())。 20 } 21 のOutputStreamアウト= response.getOutputStream()。 22 一方((LEN = br.read(BUF))> 0 ) 23 out.write(BUF、0 、LEN)。 24 br.close()。 25 out.close()。 26 }