Java実装ファイルのダウンロード機能

最初の方法:

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    }

 

おすすめ

転載: www.cnblogs.com/xiaoyue1606bj/p/10985764.html