2012-01-26 21 views
2

私は春、春のセキュリティ、休止状態を使用しています。私はファイルをアップロードしようとしているjspページを得て、バックエンドにはアップロードされたファイルをキャプチャして保存するコントローラがあります。私は風袋​​を使用しています。私は、ログイン認証に春のセキュリティを使用しています。ファイルをアップロードするときに次のエラーが発生する HTTPステータス405 - リクエストメソッド 'POST'はサポートされていません アイデアはありますか?HTTPステータス405 - リクエストメソッド 'POST'はサポートされていません

答えて

4

リクエストハンドラがPOSTを受け入れることができるようにする必要があります。リクエストパートの取得に役立つMultipartResolverを使用するようにSpringを設定することもできます。時々、これは春のセキュリティでは動作しないこと

@RequestMapping(method = RequestMethod.POST, value = "/some/post/url") 
public void postFile(MultipartHttpServletRequest request) { 
    MultipartFile multipartFile = request.getFileMap().get("keyForFileInFormPost"); 
    ... 
} 

注:ここで

MultiPartResolver

の設定
@Bean(name = "mulitpartResolver") 
public MultipartResolver multipartResolver() { 
    if (multipartResolver == null) { 
     multipartResolver = new CommonsMultipartResolver(); 
    } 
    return multipartResolver; 
} 

は、要求のマッピングです。あなたは助けを求めて春のセキュリティを使用してmultipartrequestresolversにここに私のブログの記事を見ることができます。

http://www.adamweigold.com/2012/01/using-multpartrequestresolvers-with.html

+0

私は以下を使用しています\t \t \t '@RequestM パブリック文字列のアップロード(MultipartHttpServletRequest要求、ModelMapモデル、プリンシパルプリンシパル){ MultipartHttpServletRequest multipartRequest =(MultipartHttpServletRequest)request.getFileMap()。get( "/ additem/fileupload.htm"、メソッド= RequestMethod.POST) keyForFileInFormPost "); MultipartFile multipartFile = multipartRequest.getFile( "file"); ' mulitpartResolver beanを使用する必要がありますか? –

+0

iは上記のコードを持っており、それは java.lang.IllegalStateExceptionを投げている:現在の要求は、[org.springframework.web.multipart.MultipartHttpServletRequest]型ではない。FirewalledRequest [[email protected] ] –

+0

修正するには、multipartResolver Beanが必要です。 Springリゾルバは実際にメソッドパラメータを構築します。マルチパートリクエストのリゾルバがない場合は、決して取得しません。 commonsmultipartresolverが機能しない場合は、私のブログ記事を参照してください。カスタムのものを書く必要があるかもしれません(書くのは難しいことではありません)。 – aweigold

0

ちょうどあなたの春のコンテキストで豆「multipartResolver」を定義

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
     <!-- one of the properties available; the maximum file size in bytes --> 
     <property name="maxUploadSize" value="2097152"/> 
    </bean> 

そして、使用

@ResponseBody 
@RequestMapping(value = "/{tenantId}/getEntityInfo", method = RequestMethod.POST) 
public ResponseEntity<String> getEntityInfo(
     @RequestParam(value = "xml", required = false) MultipartFile xml) { 
} 
関連する問題