springmvcファイルのアップロードとダウンロード

SpringMVCファイルのアップロードとダウンロードのための
相対的JavaWeb段階我々は、ファイルのアップロードとダウンロードの操作のためのサーブレットを使用;およびSpringMVCを提供し、アップロード操作を直接サポートを実現するmultipartパーサを。MultipartFileそれは簡単にファイルをアップロードすること、ファイル操作のための方法を提供します。アップロードまたはダウンロードがバイナリストリームを変換することであるかどうか、のアップロードSpringMVC実装ファイルを使用する方法の例フォームを理解しましょう。

ファイルのアップロード

レディ

理解します

  1. 我々は最初のものを検討するために、ファイルのアップロードはどこのファイルをアップロードするのですか?これは、プロジェクトディレクトリにアップロードされた、またはそれはあなたのローカルディスクにアップロード?
  2. アップロードされたファイルは、一般的に、バイナリファイルですので、我々は、符号化するフォームを送信するためにいくつかの方法が必要です。ので、enctype設定multipart/form-data提出する各入力フィールドのために、(データ・ストレージ・フォーマット異なる部分POSTリクエストとして送信既定のフォームを名字-值、明確にファイルアップロード同様のバイナリデータの種類には適していません)。
  3. 春は提供multipartパーサデータCommonsMultipartResolverMultipartResolverインタフェースの実装クラス)を、このパーサが基づいているApache Commons FileUpload技術、その必要性commons-filrUpload.jarをサポートします。

コンフィギュレーション

我々はjarファイルの依存関係から最初の春とSpringMVCを使用する前に加えて、また次のjarファイルをインポートする必要があります。

<! -文件上传下载- > 
<依存>
<groupIdを>コモンズ-ファイルアップロード</ groupIdを>
<たartifactId>コモンズ-ファイルアップロード</たartifactId>
<バージョン> 1.3.1 </バージョン>
</依存関係>
<依存>
<groupIdを>コモンズ-IO </ groupIdを>
<たartifactId>コモンズ-IO </たartifactId>
<バージョン> 2.4 </ version>の
</依存関係>
在springmvc.xml中配置上传下载解析器
<! -アップロードとダウンロードパーサ- > 
<豆上記のid上記= "MultipartResolver"クラス= "org.springframework.web.multipart.commons.CommonsMultipartResolver">
<プロパティ名= "defaultEncoding"値= "UTF-8"> < /プロパティ>
<プロパティ名= "maxUploadSize"値= "10485760"> </プロパティ> < -最大サイズサポートアップロードB設定- >!
</豆>
フロントコード例:

 

 サンプルコードの背景

( "/ insertMovie" @RequestMapping 
    @ResponseBody 
    公衆地図<文字列、文字列> insertMovie(@RequestParam(値= "ファイル"、必要= )MultipartFileファイル、
                                          動画、映画、
                                          HttpServletRequestのリクエスト
                                          ){ 
        地図 <文字列、文字列> RET = 新しい HashMapの<文字列、文字列> (); 
        映画MOVIE1 = movieServices.selectMovieByName(movie.getMovieCname());
        もし(MOVIE1!= nullの){ 
         ret.put( "タイプ"、 "エラー"
         ret.put( "MSG"は、 "映画がすでに存在している、第二を追加しない" )、
          返りRET; 
        } 
        IF(movie.getMovieDetail()の長さ()> 255 ){ 
            ret.put( "タイプ"、「エラー" ); 
            ret.put( " MSG "は、"フィルムは、テキストが長すぎる詳細、簡単な説明を提供してください" );
             戻りRET; 
        } 

      IF(file.getSize()> 10485760 ){ 
          ret.put( "タイプ""エラー」); 
          ret.put( "MSG"、 "ファイルサイズ10Mより大きくない" );
            戻りRET。
      } 
      文字列OLDNAME = file.getOriginalFilename()。
      String型の( "" oldName.lastIndexOf()+ 1 = oldName.substring 、OldName.length());
       IF!( "JPG、JPEG、GIF、PNG" .ToUpperCase()(type.toUpperCase())が含まれています。 ){ 
          ret.put( "タイプ"、 "エラー" ); 
          ret.put( "MSG"、 "サフィックス画像を追加JPG、JPEG、GIF、パン" );
           戻りRET; 
      } 
      // アップロード画像に保存されたパス、映画のポスター映画/映画名/画像/画像のパス 
        文字列のパス=でrequest.getSession()。のgetServletContext ()。getRealPath( "静的/静的/映画/" + movie.getMovieCname()+「/画像/ " ); 
        ファイルのターゲット = 新しい新しいファイル(パス);
        もし(!target.exists()){ 
            target.mkdirs()。
        } 

      文字列NEWNAME = ""のSystem.currentTimeMillis()+ + 型。

        してみてください{ 
            file.transferTo(新しいファイル(ターゲット、NEWNAME)); 
        } キャッチ(IOExceptionを電子){ 
            e.printStackTrace(); 
            ret.put( "タイプ"、 "エラー" )。
            ret.put( "MSG"、 "文件保存异常" );
            リターンRET; 

        } 
        // 电影海报的项目绝对路径 
        movie.setMoviePicture( "静的/静的/映画/" + movie.getMovieCname()+ "/画像/" + NEWNAME)。
        デフォルトで追加された場合、フィルムの状態を積極的に表す、1に設定されている 
        movie.setMovieState(1 );
         INT I = movieServices.insertMovie(映画);
         IF(I <0 ){ 
            ret.put( "タイプ"、 "エラー" ) ; 
            ret.put( "MSG"、 "失敗ADD" );
             戻りRET; 
        } 

        ret.put( "タイプ"、 "成功" ); 
        ret.put( "MSG"、 "正常に追加" ); 

        戻りRET; 

    }
コードの表示

 

 

 

おすすめ

転載: www.cnblogs.com/ghwq/p/12446660.html