springMVC文件上传

使用springMVC来处理文件上传的时候就需要在springmvc的配置文件里里面加上springMVC提供的MultipartResolver的声明,这样springmvc每次都会对客户端的request请求进行检查是否存在文件信息,如果存在了就会使用MultipartResolver进行解析,由于springMVC的MultipartResolver底层使用的是Commons-fileupload,所以我们需要加入Commons-fileupload.jar包。

spring-mvc.xml文件配置:

...
xmlns:p="http://www.springframework.org/schema/p"
...
...
    <!--上传文件处理   add 2015.08.28 by QZC-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="utf-8">
        <!-- 上传的最大文件 1024*1024*10 相当于10M-->
        <property name="maxUploadSize">  
           <value>10485760</value>  
        </property>  
        <property name="maxInMemorySize">  
          <value>4096</value>  
        </property> 
    </bean>

注:CommonsMultipartResolver设置的属性有:
defaultEncoding:表示用来解析request请求的默认编码格式,当没有指定的时候根据Servlet规范会使用默认值ISO-8859-1。当request自己指明了它的编码格式的时候就会忽略这里指定的defaultEncoding。
uploadTempDir:设置上传文件时的临时目录,默认是Servlet容器的临时目录。
maxUploadSize:设置允许上传的最大文件大小,以字节为单位计算。当设为-1时表示无限制,默认是-1。
maxInMemorySize:设置在文件上传时允许写到内存中的最大值,以字节为单位计算,默认是10240。

jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>测试springMVC文件上传页面</title>
  </head>
  <body>  
        <h1>文件上传</h1>  
            <!--  from enctype(编码格式)必须为multipart/form-data  
            enctype属性:指定表单数据的编码方式.该属性有3种值. 
                       (1)application/x-www-form-urlencoded:这是默认的编码方式。当表单没有指定 enctype属性时就默认使用该属性。 
                       (2)multipart/form-data:以二进制流的方式来处理表单数据,这种方式会把文件 域指定文件的内容也封装到请求参数里。(主要用来处理文件上传) 
                       (3)text/plain:这种方式主要用于直接通过表单发送邮件,所以表单的action属 性为mailto:URL的形式。 
            -->  
        <form method="post" action="<%=basePath%>user/uploadfile" enctype="multipart/form-data">  
            <input type="text" name="name"/>  
            <input type="file" name="file"/>  
            <input type="submit"/>  
        </form>  
    </body> 
</html>

controller文件:

    @RequestMapping(value = "/uploadfile", method = RequestMethod.POST)  
    public String uploadFile(@RequestParam("name") String name, @RequestParam("file") MultipartFile file) {  
        //MultipartFile是对当前上传的文件的封装,当要同时上传多个文件时,可以给定多个MultipartFile参数
           try {
               if (!file.isEmpty()) {  
                      byte[] bytes = file.getBytes();
                      //在这里就可以对file进行处理了,可以根据自己的需求把它存到数据库或者服务器的某个文件夹  
                      ......
                      ......
                      System.out.println("上传文件名称:"+file.getOriginalFilename());
                      return "redirect:getAllUser";  
               } 
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }  
           System.out.println("上传文件为空!");
           return "redirect:fileIndex";  
    }  

单加入Commons-fileupload.jar包时,由于版本问题,可能会报

java.lang.ClassNotFoundException: org.apache.commons.io.IOUtils

错误,我们只需再加入commons-io-2.4.jar就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值