非常牛叉的楼主,自己的问题其实就是答案--用springmvc上传文件时报The current request is not a multipart request异常

http://bbs.csdn.net/topics/380167574?page=1

非常牛叉的楼主,自己的问题其实就是答案


原因在于目录下有一个upload文件导致的





小弟我用spring3.1.0做了一个上传文件的例子,但发现一个奇怪的问题,就是当指定requestMapping单独为upload的时候会出现404错误(如项目名是springTest,此URL为springTest/upload),调试后发现当URL中单独只有upload时它的method会被解析为GET,而我在form表单中是指定了POST的。修改为其他名称是没问题的。
下面上代码:
web.xml代码如下:

XML/HTML code ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 xml  version = "1.0"  encoding = "UTF-8" ?> < web-app  id = "WebApp_ID"  version = "3.0"  xmlns = "http://java.sun.com/xml/ns/javaee"       xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee       http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">      < servlet >          < servlet-name >spring servlet-name >          < servlet-class >org.springframework.web.servlet.DispatcherServlet servlet-class >          < load-on-startup >1 load-on-startup >      servlet >      < servlet-mapping >          < servlet-name >spring servlet-name >          < url-pattern >/ url-pattern >      servlet-mapping >       web-app >


spring-servlet.xml如下:
XML/HTML code ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 xml  version = "1.0"  encoding = "UTF-8" ?> < beans  xmlns = "http://www.springframework.org/schema/beans"         xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"         xmlns:context = "http://www.springframework.org/schema/context"         xmlns:mvc = "http://www.springframework.org/schema/mvc"         xsi:schemaLocation="http://www.springframework.org/schema/beans          http://www.springframework.org/schema/beans/spring-beans-3.1.xsd         http://www.springframework.org/schema/context          http://www.springframework.org/schema/context/spring-context-3.1.xsd         http://www.springframework.org/schema/mvc         http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">                  < context:component-scan  base-package = "org.springframework.web.fileupload"  />               < bean  id = "multipartResolver"  class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" >          < property  name = "maxUploadSize"  value = "100000" />      bean >            < bean  id = "viewResolver"  class = "org.springframework.web.servlet.view.InternalResourceViewResolver" >          < property  name = "viewClass"  value = "org.springframework.web.servlet.view.JstlView"  />          < property  name = "prefix"  value = "/WEB-INF/jsp/"  />          < property  name = "suffix"  value = ".jsp"  />      bean >            < mvc:annotation-driven  /> beans >



测试页面fileUpload.jsp如下:
XML/HTML code ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <%@ page language="java" contentType="text/html; charset=UTF-8"      pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> < html > < head > < meta  http-equiv = "Content-Type"  content = "text/html; charset=UTF-8" > < title >Upload File title > head > < body >                             < form  method = "post"  action=" value = '/upload'  />" enctype="multipart/form-data">          < input  type = "file"  name = "file" />          < input  type = "submit"  value = "上传"  />      form > body > html >


另外有一个简单的Controller:
Java code ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 package  org.springframework.web.fileupload; import  java.io.FileOutputStream; import  java.io.IOException; import  org.springframework.stereotype.Controller; import  org.springframework.web.bind.annotation.RequestMapping; import  org.springframework.web.bind.annotation.RequestParam; import  org.springframework.web.multipart.MultipartFile; import  org.springframework.web.servlet.ModelAndView; @Controller public  class  FileUploadController{      @RequestMapping (value= "/upload" )      public  ModelAndView uploadFile( @RequestParam (value= "file" ) MultipartFile file) {          if  (!file.isEmpty()) {              FileOutputStream fos =  null ;              try  {                  byte [] bytes = file.getBytes();                  fos =  new  FileOutputStream( "D:\\" +file.getOriginalFilename());                  fos.write(bytes);              catch  (IOException e) {                  e.printStackTrace();              finally  {                  try  {                      fos.close();                  catch  (IOException e) {                      e.printStackTrace();                  }              }          }          return  new  ModelAndView( "message" );      } }

这里文件默认写入到D盘根目录下。

在WEB-INF/jsp目录下有一个message.jsp,那个可有可无,只是提示而已。

不知道怎么上传图片,所以没办法上传当时的图片。
它报的一个错误是
org.springframework.web.multipart.MultipartException: The current request is not a multipart request.
而这个是由提交的方法为get引起的。

这个问题当修改form提交的action名称,即把upload修改为其他名称,或者不单独为"项目名/upload"就不会有这个问题。当然,修改后要修改相应的requesetMapping。

麻烦各位坛友看看。谢谢。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部