2012-01-26 197 views
2

我正在使用spring,spring security,hibernate。有一個jsp頁面,我試圖上傳一個文件,後臺我有一個控制器來捕獲並存儲上傳的文件。我正在使用tomcat。我正在使用spring security進行登錄驗證。當我上傳文件時出現以下錯誤 HTTP狀態405 - 不支持請求方法'POST' 任何想法?HTTP狀態405 - 不支持請求方法'POST'

回答

4

您需要確保您的請求處理程序能夠接受POST。您還可以配置Spring使用MultipartResolver來幫助您獲取請求部分。 MultiPartResolver

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

配置這裏是請求映射:

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

注意,有時這會不會與春季安全工作。你可以看一下我的博客文章在這裏使用multipartrequestresolvers彈簧安全上求救:

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

+0

我正在使用以下\t \t \t '@RequestM (MultipartHttpServletRequest)multipartRequest =(MultipartHttpServletRequest)request.getFileMap().get(「applet.getFileMap()」)獲取(value =「/additem/fileupload.htm」,method = RequestMethod.POST) public String upload(MultipartHttpServletRequest request,ModelMap model,Principal principal) keyForFileInFormPost「); MultipartFile multipartFile = multipartRequest.getFile(「file」);' 我還需要使用mulitpartResolver bean嗎? –

+0

我有上面的代碼,它是投擲 java.lang.IllegalStateException:當前請求的類型爲[org.springframework.web.multipart.MultipartHttpServletRequest]的不:FirewalledRequest [[email protected] ] –

+0

正確,你需要一個multipartResolver bean。 Spring解析器是實際構建你的方法參數的東西。如果多部分請求沒有解析器,則永遠不會獲得解析器。 如果commonsmultipartresolver不起作用,請參閱我的博文。你可能需要寫一個自定義的(他們並不難寫)。 – aweigold

0

只是在你的Spring上下文定義豆 「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) { 
} 
相關問題