springmvc上传文件

来源:互联网 发布:淘宝网如何刷销量 编辑:程序博客网 时间:2024/06/03 16:41

1:在applicationContext.xml文件里面添加一下内容:

 <!-- 文件上传 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 解析request的编码 ,Default is ISO-8859-1 -->
        <property name="defaultEncoding" value="UTF-8" />
        <!-- 设置最大允许的大小(字节)。-1表示没有限制(默认) 1024*1024*10=10MB -->
        <property name="maxUploadSize" value="1048576000" />
        <!--被允许的最大的内存的大小,Default is 10240 bytes -->
        <property name="maxInMemorySize" value="20480" />
        <!-- 一个类似懒加载的属性.可以定义该属性.让解析文件的时候再抛异常,然后Controller中定义异常处理的方法 -->
        <property name="resolveLazily" value="true" />
    </bean>

2:jsp页面至少有一个简单的选择文件的按钮

<form action="${pageContext.request.contextPath}/**/**.htm" method="post" enctype="multipart/form-data" >  
     选择文件:<input type="file" name="file" id="file"/>
     <input type="submit" value="提交" />

3:上传的工具类

import java.io.File;
import java.io.IOException;
import java.util.Iterator;

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 Upload {

    public static String upLoad(HttpServletRequest request, HttpServletResponse response,String path) throws IllegalStateException, IOException{
          
      //解析器解析request的上下文
      CommonsMultipartResolver multipartResolver =new CommonsMultipartResolver(request.getSession().getServletContext());
      String fileName="";
      //先判断request中是否包涵multipart类型的数据,
      if(multipartResolver.isMultipart(request)){
       //再将request中的数据转化成multipart类型的数据
       MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
       @SuppressWarnings("rawtypes")
       Iterator iter = multiRequest.getFileNames();
       while(iter.hasNext()){
        MultipartFile file = multiRequest.getFile((String)iter.next());
        if(file != null){
         fileName = file.getOriginalFilename();
         String bpath = path+fileName;
         File localFile = new File(bpath);
         //写文件到本地
         file.transferTo(localFile);
        }
       }
      }
      return fileName;
    }
}

4:在相应的控制器里面写

     String basePath = request.getSession().getServletContext().getRealPath("/")+"upload"+File.separator;
     String fileName = Upload.upLoad(request, response, basePath);//文件名称

至此,一个简单的文件上传功能完成!!!


0 0
原创粉丝点击