概要
ファイルアップロードのJava Webプロジェクトは、一般的な機能で、ファイルをアップロードするには成功しなかった、あなたは以下の手順が必要です
。1. POSTに設定する必要がありますmethod属性のフォームを。
2.フォームのenctype属性は、(バイナリストリーム処理フォームデータを使用するようにブラウザが唯一の方法)にmultipart / form-dataに設定されなければなりません。
3.pomファイル、コモンズ・ファイルアップロードの依存性を追加します。
4. MultipartResolverは、Spring MVCのプロファイルに配置されました。
サンプルファイルのアップロード
はまだ段落SpringMVCProjectプロジェクト(:以前に接続されている、先行するサンプルプログラム完了 https://www.jianshu.com/p/fde4557c527cを)。
アップロードページの背景画像ファイル
「backImage.jpg」という名前のプロジェクトのwebappディレクトリ、背景画像を入れて、フォルダ「イメージ」を作成します:
POM・コンフィギュレーション・ファイル
・コモンズ・ファイルアップロードを追加するプロジェクトのPOMファイルに依存しています:
1 <依存性> 2 <のgroupId>コモン・ファイルアップロード</ groupIdを> 3 <たartifactId>コモン・ファイルアップロード</たartifactId> 4 <バージョン> 1.4 </バージョン> 5 </依存>
JSPファイルを作成し
、プロジェクトのwebappディレクトリにファイルuploadfile.jsp作成し、次のプログラムを記述します。
1 <%@ページ言語=」javaの "contentTypeの=" text / htmlの;のcharset = UTF-8 "pageEncodingは=" UTF-8 "%> 2 <HTML> 3 <ヘッド> 4 <META HTTP-当量=" のContent入力 "コンテンツ=" text / htmlの "文字セット=" UTF-8 "> 5 <タイトル> uploadfile </タイトル> 6 <スタイルタイプ=" テキスト/ CSS「> 7 本体{ 8 背景画像:URL(画像/ backImage .JPG); 9 背景サイズ:カバー。 </スタイル> 12 </ HEAD> 13 <body> 14 <センター> 15 <H3>文件上传页面</ H3> 16 <BR> 17 <フォームアクション=」アップロード "メソッド=" ポスト "のenctype =" マルチパート/フォームデータ "> 18 <TABLE> 19 <TR> 20 <TD> <ラベル>文件信息</ label>は</ TD> 21 <TD>の<input type =" テキスト "名前=" 情報「> </ TD> 22 </ TR> 23である <TR> 24 <TD> <ラベル> [ファイル:</ label>は</ TD >25 <TD>の<input type =」ファイル "NAME =" ファイル "> </ TD> 26 </ TR> 27 <TR> 28 <TD>の<input type =" 提出 idは= "" 提出 "=値" 上传「> </ TD> 29 </ TR> 30 </テーブル> 31 </フォーム> 32 </センター> 33 </ BODY> 34 </ HTML>
コントローラクラスを作成します
com.snow.dcl.controllerパッケージにUploadFileControllerクラスファイルを作成するには、以下のプログラムを記述します。
1 @Controller 2 パブリック クラス UploadFileController { 3 @RequestMapping(値= " /アップロード "、メソッド= RequestMethod.POST) 4 @ResponseBody 5 パブリック文字列アップロード(HttpServletRequestのリクエスト、@RequestParam(」情報 ")は、文字列情報、@RequestParam(" ファイル ")MultipartFileファイル)スローにIOException { 6 場合(file.isEmpty()){! 7 文字列のパス= request.getServletContext()getRealPath(" ファイル「)。 8 文字列filename = file.getOriginalFilename()。 9 ファイルuploadFile = 新しいファイル(パス、ファイル名)。 10 もし {(!。uploadFile.getParentFile())(存在) 11 )uploadFile.getParentFile(mkdirs()。 12 } 13 file.transferTo(新しいファイル(パス+ File.separator + filename)で)。 14 リターン「成功!」。 15 } 他 { 16 リターン「いいえファイル!」。 17 } 18 } 19 }
「!正常にアップロードファイル」あなたはに戻ることができ、@ResponseBodyノートにコントローラプログラムを使用して、文字列データは、「アップロードファイルを追加されていません!」前に、Spring MVCのコンフィギュレーション・ファイルspringmvc-servlet.xmlのそれ以外の構成でビューのJSPファイルを返します。
springmvc-servlet.xml設定ファイル
設定ファイルspringmvc-servlet.xml MultipartResolverで、次のようにプロファイルを増やし:
1の<?xml version =」1.0 "エンコード=" UTF-8 "?> 2 <豆のxmlns =" http://www.springframework.org/schema/beans " 3つ のxmlns:XSI =" のhttp:// WWW。 w3.org/2001/XMLSchema-instance " 4 :コンテキスト=のxmlns" http://www.springframework.org/schema/context " 5つ のxmlns:MVC =" http://www.springframework.org/schema/mvc " 6 XSI:のschemaLocation =」http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/contextのhttp:// WWW .springframework.org /スキーマ/コンテキスト/春context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd「> 7 。8 <! -クラスに関連する注釈付きスプリングをスキャンする必要がある場合、Javaクラスのスプリングは、サブパケット、またはパケットの自動スキャンベースパッケージセット、ばねはビーンとして登録されていることができる- > 9 <文脈:スキャンコンポーネントベース- パッケージ = " com.snow.dcl.controller " /> 10 11。 <MVC:アノテーション・ドリブン/> 12である <MVC:デフォルト -servlet-ハンドラ/> 13は、 14 <! - ビューリゾルバ - >15 <ビーンID = " viewResolver " クラス =" org.springframework.web.servlet.view.InternalResourceViewResolver "> 16 <プロパティ名=" 接頭辞 "> 17 <値> / WEB-INF /コンテンツ/ </値> 18 < /プロパティ> 19 <プロパティ名= " 接尾辞 "> 20 <値>の.jsp </値> 21 </プロパティ> 22 </ビーン> 23 24 <ビーンID =" multipartResolver "クラス =」org.springframework.web.multipart.commons.CommonsMultipartResolver "> 25 <! - -ファイルサイズをアップロード未満20M> 26である <プロパティ名=" maxUploadSize「> 27 > 20971520 </値<値> 28 </プロパティ> 29 <! -要求された符号化フォーマット、同じ属性値pageEncodingはJSPファイルでなければなりません- > 30 <プロパティ名= " defaultEncoding "> 31が <値> 8 UTF - 。</ value>は 32 </ property>の 33です 。</豆> 34である 35 > </ビーンズ 36
注:
1.のconfigure MultipartResolverもMVCの名前空間を追加しました。
2.追加<MVC:デフォルト・サーブレット・ハンドラ /> 画像やその他の背景静的リソースを処理するように構成。
3.追加<MVC:デフォルト・サーブレット・ハンドラ /> の設定は、<MVC:注釈ドリブン/>を追加する必要がありそうでない状況が解決されません@Controllerノートは、彼らが一致しない場合は、要求タイプの要求を処理するために、リード、我々はすべてが行きます<MVC:デフォルト・サーブレット・ハンドラ /> 、すなわちデフォルトのサーブレット処理、静的リソース(例えば、イメージリソース)は、対応するコントローラデフォルトのサーブレットが処理されるがないからです。
テストは
TomcatServerを開始し、起動が完了した後、ブラウザを開いて入力してください:HTTP:// localhostを:8080 / uploadfile.jsp、成功した訪問。任意のファイルを追加しないでください、直接提出は:txtファイルでテストを追加:送信:プロジェクトディレクトリのターゲット・ディレクトリの下に表示プロジェクトディレクトリは、ファイルディレクトリ内のファイルをアップロードし、ファイルのディレクトリを生成します。この時点では、ファイルアップロード機能の記録が完了しています。