SpringMVC基础及实例(二)文件上传简单实例
来源:互联网 发布:php rsa2 加密解密 编辑:程序博客网 时间:2024/05/22 10:52
springMVC提供了两种文件上传的方式,一种是自己写输入到本地,另一种是借助springMVC封装好的MultipartHttpServletRequest上传文件。
上传文件所需的两个jar包:
com.springsource.org.apache.commons.fileupload
com.springsource.org.apache.commons
注意:
1.上传文件无论用什么框架都需要用到“enctype”属性
2.必须采用method方式
配置文件:
1.web.xml
<servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:config/springAnnotation-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><!-- encoding filter for jsp page --><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
2. springAnnotation-servlet.xml文件
<!-- 注解扫描包 --> <context:component-scan base-package="com.tgb.web.controller.annotation" /> <!-- 开启注解 --> <mvc:annotation-driven/> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="utf-8" /> <!-- 指定所上传文件的总大小。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 --> <property name="maxUploadSize" value="10485760000" /> <property name="maxInMemorySize" value="40960" /> </bean>
CommonsMultipartResolver允许设置的属性有:
- defaultEncoding:表示用来解析request请求的默认编码格式,当没有指定的时候根据Servlet规范会使用默认值ISO-8859-1。当request自己指明了它的编码格式的时候就会忽略这里指定的defaultEncoding。
- uploadTempDir:设置上传文件时的临时目录,默认是Servlet容器的临时目录。
- maxUploadSize:设置允许上传的最大文件大小,以字节为单位计算。当设为-1时表示无限制,默认是-1。
- maxInMemorySize:设置在文件上传时允许写到内存中的最大值,以字节为单位计算,默认是10240。
3. jsp页面:
<body><h>添加用户</h><form name="userForm" action="/springMVC7/file/upload2" method="post" enctype="multipart/form-data" >选择文件:<input type="file" name="file"><input type="submit" value="上传" ></form></body>
4.方式一:手动输入本地文件
@RequestMapping("/upload1")public String addUser(@RequestParam("file") CommonsMultipartFile file,HttpServletRequest request) throws IOException{////输出file名称System.out.println("fileName---->" + file.getOriginalFilename());if(!file.isEmpty()){try {//将文件放到D盘的根目录 FileOutputStream os = new FileOutputStream("D:/" + new Date().getTime() + file.getOriginalFilename());//获取输入流InputStream in = file.getInputStream();//写文件int b = 0;while((b=in.read()) != -1){os.write(b);}os.flush();os.close(); in.close(); } catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return "/success";}
4.方式二:采用封装好的MultipartHttpServletRequest上传文件
@RequestMapping("/upload2")public String upload2(HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException{//定义一个解释器,解析request,拿到springMVC初始化的上下文,解析上下文CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());//判断request是否为map类型数据if(multipartResolver.isMultipart(request)){//转换SpringMVC封装好的文件类型MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;//定义迭代器获取文件名称Iterator<String> iter = multiRequest.getFileNames();while(iter.hasNext()){//获取文件,MultipartFile定义文件类型MultipartFile file = multiRequest.getFile((String)iter.next());if(file != null){//定义输出文件名称String fileName = "demoUpload" + file.getOriginalFilename();//定义输出路径String path = "D:/" + fileName;//new 一个文件类型File localFile = new File(path);//将上传文件转到本地文件file.transferTo(localFile);}}}return "/success"; //返回成功页面}}
在使用第二种方式时,需要在配置文件springAnnotation-servlet.xml中配置MultipartResolver处理器。
0 0
- SpringMVC基础及实例(二)文件上传简单实例
- SpringMVC上传文件的简单代码实例
- SpringMVC上传文件实例
- SpringMVC多文件上传实例(转)
- SpringMVC进行文件上传实例
- SpringMVC多文件上传实例
- SpringMVC Ajax上传文件实例
- SpringMVC配置,简单实例,文件上传与下载,ajax请求
- SpringMVC文件上传 多文件上传实例
- SpringMVC文件上传 多文件上传实例
- springMVC基础及实例(三)springMVC与spring集成
- jsp文件上传简单实例
- JSP文件上传简单实例
- jsp文件上传简单实例
- PHP上传文件简单实例
- SSM搭建-SpringMVC 实例文件上传(15)
- 18、SSM框架-SpringMVC 实例文件上传(5)
- SpringMVC多文件上传实例(未测试)
- ExpressionBlend教程:WPF Button自定义样式
- 感慨 专业技术书籍好少啊
- XML
- 实体框架 (EF) 入门 => 一、我该用哪个工作流?
- 【Java技术点滴】——XML解析方式比较
- SpringMVC基础及实例(二)文件上传简单实例
- 实体框架 (EF) 入门 => 二、在全新的数据库中使用 Code First
- 实体框架 (EF) 入门 => 三、CodeFirst 支持的完整特性列表
- 实体框架 (EF) 入门 => 四、CodeFirst 枚举支持
- 漫谈程序员
- 实体框架 (EF) 入门 => 五、连接和模型
- 实体框架 (EF) 入门 => 六、性能注意事项
- 数据库表字段介绍
- 漫谈程序员系列:怎样成为技术达人