SpringMVC(4)---ファイルのアップロードとダウンロード

まず、ファイルのアップロード

ファイルアップロードプロジェクトの開発は、最も一般的な機能の一つである、springMVCは良いサポートファイルのアップロードすることができますが、SpringMVCのデフォルトのコンテキストはMultipartResolverを装備していない、したがって、デフォルトでは、ファイルのアップロード作業を処理することはできません

あなたは春のファイルアップロード機能を使用する場合は、コンテキスト内でMultipartResolverを設定する必要があります

1、設定ファイルとガイドパケット

springmvc-servlet.xmlプロファイリングのために

1 <! -ファイルアップロードの設定- >
 2      <豆ID = "MultipartResolver"
 。3            クラス = "org.springframework.web.multipart.commons.CommonsMultipartResolver">
 。4          。<プロパティ名= "defaultEncoding"値=」UTF-8 "/>
 5          <! -アップロードファイルサイズ制限をバイト単位で(= 10485760 10Mの) - >
 6          <プロパティ名=" maxUploadSize "値=" 1048576 "/>
 7          <プロパティ名=" maxInMemorySize「値= "40960" />
 8      </豆>

図2に示すように、フロントエンドはUpload.jsp

ファイルをアップロードするために、フォームメソッドをPOSTに設定する必要があり、そしてENCTYPEは、multipart / form-dataに、この場合にのみ、ブラウザは、バイナリデータを送信するためにファイルサーバにユーザによって選択されるであろう

1 <%@ページのcontentType = "text / htmlの;のcharset = UTF-8"言語= "Javaの" %>
 2 <HTML>
 3 <BODY>
 4  
5 <フォームアクション= "$ {pageContext.request.contextPath} / upload1 " 
 6                 ENCTYPE ="マルチパート/フォームデータ」METHOD = "POST">
 7      <P>上传文件:<INPUT TYPE = "FILE" NAME = "ファイル" /> </ P>
 8      <P>の<input type =値を"送信" = "上传"> </ P>
 9 </フォーム>
 10  
11 </ BODY>
 12 </ HTML>

 

(1)アップロードされたファイルの方法の流れによって、

@RequestParam(「ファイル」)パッケージ名=ファイルがCommonsMultipartFileオブジェクトに生成されたファイルを制御し、アレイは、バルクアップロードCommonsMultipartFileと比較することができます

CommonsMultipartFile一般的な方法:

  • 文字列getOriginalFilenameは():以前のファイルをアップロードするとして知られて取得します
  • InputStreamのgetInputStreamは():ファイルストリームを取得します。
  • transferTo(ファイルDEST)を無効:ファイルディレクトリをアップロードするファイルを保存します

コード

1  @Controller
 2  パブリック クラスControllerUpload {
 3  
。4      @RequestMapping( "/ upload1" 。5      パブリック文字列ファイルアップロード(@RequestParam( "ファイル" )CommonsMultipartFileファイル、
 図6                                           のHttpServletRequest要求)スローにIOException {
 。7  
。8          // 1ファイルの名前取得
9          uploadName =文字列file.getOriginalFilename();
 10          // 2.ファイル名がnullの場合は帰国している
11。         IF( "" .equals(uploadName)){
 12が             復帰 "リダイレクト:/index.jsp"13である         }
 14          のSystem.out.println( "ファイル名をアップロード:" + uploadName);
 15  
16          // 設定を保存する3.アップロードパス
17          Request.getServletContext文字列のパス=()getRealPath(「/ WEB-INF / upload1。 " );
 18          // 4パスが存在しない場合に作成される
19。          ファイルのrealpath = 新しい新しいファイル(パス);
 20は         IF!(realPath.exists()){
 21は             realPath.mkdir();
 22である         }
 23である          のSystem.out。 println( "パス名を保存:" + 実パス);
 24  
25          // 5.ファイル入力ストリーム
26         =でのInputStream file.getInputStream()。
27          // 6.文件输入流
28          のFileOutputStreamアウト= 新しいのFileOutputStream(新しいファイル(実パス、uploadName));
29  
30          // 7读取
31          のint LEN = 0 32          バイト []バイト= 新しい バイト [1024 ];
33          ながら(!(LEN = in.read(バイト))= -1 ){
 34              out.write(バイト0 、LEN)。
35              out.flush()。
36          }
 37          out.close()。
38          in.close()。
39  
40          リターン "リダイレクト:/success.jspを" ;
41      }
 42 }

テストを実行

保存した場所

(2)file.Transtoの使用は、アップロードします

コード

1  @Controller
 2  パブリック クラスControllerUpload {
 3  
4      @RequestMapping( "/ upload2" 5      パブリック文字列fileUpload2(@RequestParam( "ファイル" )CommonsMultipartFileファイル、 
 6                                         HttpServletRequestのリクエスト)がスローにIOException {
 7  
8          // 上传路径保存设置
9          ストリングパス= request.getServletContext()getRealPath( "/ WEB-INF / upload2"。 )。
10          ファイルのrealpath = 新しいファイル(パス)。
11          もし(!realPath.exists()){
12は             、realPath.mkdir()
 13がある         }
 14  
15          // アドレスアップロードファイル
16          のSystem.out.println(「アップロードアドレス保存ファイル:」+ 実パス);
 17  
18がある         // CommonsMultipartFileの方法で直接ファイルを書き込む(この時に注意してください)
19          file.transferTo(新しい新規ファイル(のrealpath + "/" + file.getOriginalFilename()));
 20は、 
21である         リターン "リダイレクト:/success.jsp" ;
 22である     }
 23れます }

【注意点は:ここでは、成功したアップロードインターフェースを表示するための2つの方法があり、最初のものは、私のように成功し、新たな成功が.jspです。

そして、成功したアップロードが成功したインターフェイスにリダイレクトする後。あなたが戻るとアップロードが成功した後に直接表示されるように、第2は、コントローラにJSON、プラス@ResponseBodyを実行し、文を返すことです]

第二に、ファイルのダウンロード

図1に示すように、フロントdownload.jsp

 

1 <%@ページのcontentType = "text / htmlの;のcharset = UTF-8"言語= "Javaの" %>
 2 <HTML>
 3 <BODY>
 4  
5 <HREF = "$ {pageContext.request.contextPath} /ダウンロード「>下载图片</a>の
 6  
7 </ BODY>
 8 </ HTML>

 

図2に示すように、制御コード

  1. 最初のセットに対する応答
  2. ファイルを読む - InputStreamを
  3. ファイルを書く - のOutputStream
  4. 操作を実行します
  5. 閉じるストリーム(第一スイッチ)
1  @Controller
 2  パブリック クラスControllerDownload {
 3  
。4      @RequestMapping( "/ダウンロード" 。5つの     パブリック文字列ダウンロード(HttpServletResponseの応答)スロー例外{
 。6  
。7          // 画像をダウンロードする1アドレス
8          文字列のパス=「F:\\画像" ;
 9          文字列filename =" 9.jpg " ;
 10  
11          // 2セット応答レスポンスヘッダ
12である          (response.reset); //は、ページがキャッシュされていない設定し、空のバッファ
13は、          response.setCharacterEncoding(" UTF-8「); // 文字エンコーディング
14          response.setContentType( "マルチパート/フォームデータ"); // バイナリ送信データ
 15          // 3.応答ヘッダ
16          response.setHeader( "コンテンツの廃棄" 17。                  "添付; fileNameに=" + URLEncoder.encode(ファイル名"UTF-8" ));
 18である 
。19          ファイルファイル= 新しい新しいファイル(パス、ファイル名);
 20          // 4は、ファイルを読む-入力ストリーム
21は、          入力ストリーム入力= 新しい新しいFileInputStreamを(ファイル);
 22である         // 5。ファイルを書き込む-出力ストリーム
23である          のOutputStream OUT = response.getOutputStream();
 24  
25          バイト[]バフ= 新しい バイト [1024 ];
26          int型のインデックス= 0 27          // 6.执行写出操作
28          ながら((インデックス= input.read(バフ))= -1!){
 29              out.write(バフ、0 、インデックス)。
30              out.flush()。
31          }
 32          out.close()。
33          input.close()。
34          リターン ヌル35      }
 36 }

テストを実行

 

おすすめ

転載: www.cnblogs.com/tqsh/p/11297777.html