SpringMVCファイルのアップロードとダウンロードのための
相対的JavaWeb段階我々は、ファイルのアップロードとダウンロードの操作のためのサーブレットを使用;およびSpringMVCを提供し、アップロード操作を直接サポートを実現するmultipart
パーサを。MultipartFile
それは簡単にファイルをアップロードすること、ファイル操作のための方法を提供します。アップロードまたはダウンロードがバイナリストリームを変換することであるかどうか、のアップロードSpringMVC実装ファイルを使用する方法の例フォームを理解しましょう。
ファイルのアップロード
レディ
理解します
- 我々は最初のものを検討するために、ファイルのアップロードはどこのファイルをアップロードするのですか?これは、プロジェクトディレクトリにアップロードされた、またはそれはあなたのローカルディスクにアップロード?
- アップロードされたファイルは、一般的に、バイナリファイルですので、我々は、符号化するフォームを送信するためにいくつかの方法が必要です。ので、
enctype
設定multipart/form-data
提出する各入力フィールドのために、(データ・ストレージ・フォーマット異なる部分POSTリクエストとして送信既定のフォームを名字-值
、明確にファイルアップロード同様のバイナリデータの種類には適していません)。 - 春は提供
multipart
パーサデータCommonsMultipartResolver
(MultipartResolver
インタフェースの実装クラス)を、このパーサが基づいている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; }