DispatcherServletは、MultiPartRequestを処理する方法を明示的に指示する必要があります。
SpringMVCは、ファイルをアップロードする次の方法を提供します
xxx-servlet.xmlを構成し、次のコードを追加します。
コードコピーは次のとおりです。
<bean id = "multipartresolver"
class = "org.springframework.web.multipart.commons.commonsmultipartresolver">
<! - アップロードされたファイルの最大サイズを1MBに設定します - >
<プロパティ名= "maxuploadsize">
<value> 1048576 </value>
</property>
</bean>
コードコピーは次のとおりです。
<bean id = "multipartresolver"
class = "org.springframework.web.multipart.commons.commonsmultipartresolver">
<! - アップロードされたファイルの最大サイズを1MBに設定します - >
<プロパティ名= "maxuploadsize">
<value> 1048576 </value>
</property>
</bean>
ここのファイルサイズは実際には合計ファイルサイズであることに注意してください
ファイルサイズを構成する場合、例外情報制御を構成する必要があると思います
したがって、異常なディスプレイを構成する必要があります
コードコピーは次のとおりです。
<! - springmvcがアップロードファイルの制限を超えると、org.springframework.web.multipart.maxuploadsizeexexexception->をスローします - >
<! - この例外は、アップロードされたファイル情報をチェックするときにSpringMVCによってスローされましたが、現時点ではコントローラーメソッドに入力していません - >
<bean id = "ExceptionResolver"
>
<プロパティ名= "ExceptionMappings">
<props>
<! - maxuploadsizeexexededexceptionの例外に遭遇した場合、それは自動的に/web-inf/jsp/error_fileupload.jspページにジャンプします - >
<小道具
key = "org.springframework.web.multipart.maxuploadsizeexexedexception"> error_fileupload </prop>
</props>
</property>
</bean>
コードコピーは次のとおりです。
<! - springmvcがアップロードファイルの制限を超えると、org.springframework.web.multipart.maxuploadsizeexexexception->をスローします - >
<! - この例外は、アップロードされたファイル情報をチェックするときにSpringMVCによってスローされましたが、現時点ではコントローラーメソッドに入力していません - >
<bean id = "ExceptionResolver"
>
<プロパティ名= "ExceptionMappings">
<props>
<! - maxuploadsizeexexededexceptionの例外に遭遇した場合、それは自動的に/web-inf/jsp/error_fileupload.jspページにジャンプします - >
<小道具
key = "org.springframework.web.multipart.maxuploadsizeexexedexception"> error_fileupload </prop>
</props>
</property>
</bean>
または、怠け者であり、サイズを設定しないでください。最終的なデフォルト値は無制限です。返品情報を制御する必要がある場合は、JSONなどの例外処理で指定された形式データを返すことを検討できます。
構成ページの後、いつものように、フォームに追加します:enctype = "multipart/form-data"
次に、処理する必要があるアクションがあります
最初の方法:
コードコピーは次のとおりです。
public string login(@requestparam multipartfileファイル、モデルモデル){
……………………
}
コードコピーは次のとおりです。
public string login(@requestparam multipartfileファイル、モデルモデル){
……………………
}
ファイルの名前は、<入力型=ファイル>の属性値と一致するように保証する必要があります。
コードコピーは次のとおりです。
public string login(@valid userinfo userininfo、bindingResult result、@requestparam multipartfile []ファイル、モデルモデル){
……………………
}
コードコピーは次のとおりです。
public string login(@valid userinfo userininfo、bindingResult result、@requestparam multipartfile []ファイル、モデルモデル){
……………………
}
単一のファイルは省略できます@RequestParam複数のファイルは省略できません
2番目の方法:
コードコピーは次のとおりです。
Public ModelandView Handlerequest(httpservletrequestリクエスト、
httpservletResponse応答)スロー例外{
// MultiParthttpRequestに変換:
MultiParthTTPSERVLETREQUEST MultiPartRequest =(MultiParthTTPSERVLETREQUEST)リクエスト;
//ファイルを取得します:
MultiPartFile file = MultiPartRequest.getFile( "ファイル");
}
コードコピーは次のとおりです。
Public ModelandView Handlerequest(httpservletrequestリクエスト、
httpservletResponse応答)スロー例外{
// MultiParthttpRequestに変換:
MultiParthTTPSERVLETREQUEST MultiPartRequest =(MultiParthTTPSERVLETREQUEST)リクエスト;
//ファイルを取得します:
MultiPartFile file = MultiPartRequest.getFile( "ファイル");
}
これにより、ファイルを取得することもできます
実際、最初の構成は、2つのJARパッケージを追加することです。
commons-fileupload-1.2.2.jar
Commons-Io-2.1.jar