一、准备
需要的jar

二、配置
1、 spmvc-servlet.xml
|
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
<?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" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd"> <!-- 默认的注解映射的支持 ,它会自动注册DefaultAnnotationHandlerMapping 与AnnotationMethodHandlerAdapter-->
<mvc:annotation-driven /> <!-- 自动扫描注解的Controller --> <context:component-scan base-package="com.wy.controller"
/> <bean
class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"
/> <!-- 映射处理器 --> <bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/fileUploadController.do">fileUploadController</prop> </props> </property> </bean> <!-- ParameterMethodNameResolver 解析请求参数,并将它匹配Controller中的方法名 --> <bean id="parameterMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> <property name="paramName"
value="action"
/> </bean> <bean id="fileUploadController" class="com.wy.controller.FileUploadController"> <property name="methodNameResolver" ref="parameterMethodNameResolver"> </property> </bean> <!-- 文件上传表单的视图解析器 --> <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="204800"
/> </bean>
</beans>
|
2、Controller
使用两种方式:
一种是基于注解的,另一种传统的方式HttpServletRequest
使用第二种方式时要注意:操作方法中对应的方法参数前两位必须是request,response对象并且都要加上,否则会出现 No request handling method with name 'insert' in class "ClassName",页面显示为404错误
这个问题出现在使用多操作控制器情况下,相关的操作方法中对应的方法参数前两位必须是request,response对象,必须要有,否则会报如上异常。
package
com.wy.controller;import
java.util.List;import
javax.servlet.http.HttpServletRequest;import
javax.servlet.http.HttpServletResponse;import
javax.servlet.http.HttpSession;import
org.springframework.stereotype.Controller;import
org.springframework.util.MultiValueMap;import
org.springframework.web.bind.annotation.RequestMapping;import
org.springframework.web.bind.annotation.RequestMethod;import
org.springframework.web.bind.annotation.RequestParam;import
org.springframework.web.multipart.MultipartFile;import
org.springframework.web.multipart.MultipartHttpServletRequest;import
org.springframework.web.servlet.ModelAndView;import
org.springframework.web.servlet.mvc.multiaction.MultiActionController;@Controller@RequestMapping("/fileUploadController")public
class FileUploadController
extends MultiActionController { /** * 1、文件上传 * @param request * @param response * @return */ public
ModelAndView uploadFiles(HttpServletRequest request, HttpServletResponse response) { ModelAndView mav =
new ModelAndView(); // 转型为MultipartHttpRequest MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; // 获得上传的文件(根据前台的name名称得到上传的文件) MultiValueMap<String, MultipartFile> multiValueMap = multipartRequest.getMultiFileMap(); List<MultipartFile> file = multiValueMap.get("clientFile"); //MultipartFile file = multipartRequest.getFile("clientFile"); if(!file.isEmpty()){ //在这里就可以对file进行处理了,可以根据自己的需求把它存到数据库或者服务器的某个文件夹 System.out.println("================="+file.get(0).getName()
+ file.get(0).getSize()); } return
mav; } /** *
* @param name * @param file * @param session * @return */ @RequestMapping(value="/uploadFile",
method=RequestMethod.POST) public
String uploadFile(@RequestParam("fileName") String fileName,
@RequestParam("clientFile")
MultipartFile clientFile, HttpSession session){ if
(!clientFile.isEmpty()) { //在这里就可以对file进行处理了,可以根据自己的需求把它存到数据库或者服务器的某个文件夹 System.out.println("================="+clientFile.getSize());
}
return
""; }
}对文件的具体实现
|
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
import
java.io.File;import
java.io.IOException;import
java.util.Iterator;import
java.util.UUID;import
javax.servlet.http.HttpServletRequest;import
javax.servlet.http.HttpServletResponse;import
org.springframework.web.multipart.MultipartFile;import
org.springframework.web.multipart.MultipartHttpServletRequest;import
org.springframework.web.multipart.commons.CommonsMultipartResolver;public
class AddImage { public
String upload2(HttpServletRequest request,HttpServletResponse response, String fileName)
throws IllegalStateException, IOException { //创建一个通用的多部分解析器 CommonsMultipartResolver multipartResolver =
new CommonsMultipartResolver(request.getSession().getServletContext()); //判断 request 是否有文件上传,即多部分请求 if(multipartResolver.isMultipart(request)){ //转换成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request; //取得request中的所有文件名 Iterator<String> iter = multiRequest.getFileNames(); while(iter.hasNext()){ //记录上传过程起始时的时间,用来计算上传时间 int
pre = (int) System.currentTimeMillis(); //取得上传文件 MultipartFile file = multiRequest.getFile(iter.next()); if(file !=
null){ //取得当前上传文件的文件名称 String myFileName = file.getOriginalFilename(); //如果名称不为“”,说明该文件存在,否则说明该文件不存在 if(myFileName.trim() !=""){ System.out.println(myFileName); //重命名上传后的文件名 fileName = UUID.randomUUID() +"+"+ file.getOriginalFilename(); //定义上传路径 String path =
"F:/workspace/myproject/WebRoot/image/"
+ fileName; File localFile =
new File(path); file.transferTo(localFile); } } //记录上传该文件后的时间 int
finaltime = (int) System.currentTimeMillis(); System.out.println(finaltime - pre); } } return
fileName ; }} |
3、视图
upload.jsp
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<%@ page language="java"
import="java.util.*"
pageEncoding="UTF-8"%><% String path = request.getContextPath(); String basePath = request.getScheme() +
"://" + request.getServerName() +
":" + request.getServerPort() + path +
"/";%><!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>file upload test</title> </head> <body> <form method="post"
action="<%=path %>/fileUploadController/uploadFile"
enctype="multipart/form-data"> 文件名: <input type="text"
name="fileName"
/><br/> <input type="file"
name="clientFile"
/><br/> <input type="submit"
value="上传文件 "/> </form> </body></html> |
8242

被折叠的 条评论
为什么被折叠?



