2016-09-30 3 views
0

私はTomcat 8でSpring MVC(バージョン4.1)を使用していますが、ファイルアップロード機能がうまく動作しようとしています。現在、私は、コントローラは次のように設定している:最後に、私の春のXML設定ファイルが必要なリゾルバが指定されていSpring MVC 4ファイルアップロードがサイレントモードで失敗する

<servlet> 
    <servlet-name>spring</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <load-on-startup>1</load-on-startup> 
    <!-- Configuration for file upload (configuring Multipart file) --> 
    <multipart-config> 
     <location>/tmp</location> 
     <max-file-size>500000</max-file-size> 
     <max-request-size>505000</max-request-size> 
     <file-size-threshold>10485</file-size-threshold> 
    </multipart-config> 
</servlet> 

そして:

@RequestMapping(value={"/TestCase/Upload"}, method=RequestMethod.POST) 
@ResponseBody 
public ResponseEntity<String> uploadFile(HttpServletRequest request, 
     @RequestParam("file") MultipartFile file) { 
    System.out.println("Hit this location."); 
    return new ResponseEntity("Success"); 
} 

私のweb.xmlが適切なサーバー構成となっています

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
     <property name="maxUploadSize" value="500000" /> 
    </bean> 

Apache commons-fileupload JARはクラスパス上にあります。

これまでTomcat以外のサーバーでこのアプローチを使用していましたが、現在はアプリケーションが動作していませんが、静かに失敗しています。レスポンスのステータスコードは200ですが、ファイルアップロードコントローラメソッド内の何も実行されません。サーバログに例外がスローされることはありません。コントローラメソッドに何かを出力させる唯一の方法は、「Multipart」パラメータを完全に削除することです。最初はコントローラメソッドが全くヒットしていないと思っていましたが、URLマッピングを変更すると、呼び出しコードが404をスローします。正しいマッピング/メソッドに間違いなく当てはまります。メソッドが実行されています(例外がスローされていません)

私は間違っていますか?

答えて

0

それは起動時にMVCがコンソールからnoClassDefを非表示にします。問題は、apache-commons-io.jarがクラスパスに欠落していたことです。そのJARを含めて、すべてが正しく動作するようになりました。

将来、Springが静かに誤動作している場合は、確実にすべての必要なライブラリが明示的に含まれていることを確認してください。

関連する問題