web.xml

<!-- 配置springMVC -->
  <servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
           <!-- contextConfigLocation 是固定的 -->
            <param-name>contextConfigLocation</param-name>
                  <!-- 配置读取路径-->
            <param-value>classpath*:config/springAnnotation-servlet.xml</param-value>
        </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>springMVC</servlet-name>
        <!-- 配置拦截规则-->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

springAnnotation-servlet.xml

    <!--  配置上传文件-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
          <!-- 默认编码 -->
          <property name="defaultEncoding" value="utf-8" />
          <!--最大上传大小单位字节-->
          <property name="maxUploadSize" value="10485760000" />
          <!--最大缓存字节-->
          <property name="maxInMemorySize" value="40960" />
    </bean>

controller

@Controller
@RequestMapping("/file")
public class UploadController {

    @RequestMapping("/upload1")
    public String addUser(@RequestParam("file") CommonsMultipartFile file,HttpServletRequest request) throws IOException{
        //file.getOriginalFilename(): 1.png
        if(!file.isEmpty()){
            //创建输出流
            FileOutputStream os =null;
            //获取输入流
            InputStream in = null;
            //高效输入流
            BufferedInputStream bi=null;
            //高效输出流
            BufferedOutputStream bo=null;
            int len=0;
            try {
                  os = new FileOutputStream("E:/"+ file.getOriginalFilename());
                  in = file.getInputStream();
                  bi=new BufferedInputStream(in);
                  bo=new BufferedOutputStream(os);
                byte[]  arr = new byte[1024];
                while((len=bi.read(arr)) != -1){
                    bo.write(arr, 0, len);
                    bo.flush();
                }
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                //释放资源
                if(os!=null){
                    os.close();
                }
                if(in!=null){
                    in.close();
                }
                if(bi!=null){
                    bi.close();
                }
                if(bo!=null){
                    bo.close();
                }
            }
        }
        return "/success";
    }
    //多文件上传
    @RequestMapping("/upload2")
    public String upload2(HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException{
        ///创建一个通用的多部分解析器
        CommonsMultipartResolver multipartResolver  = new CommonsMultipartResolver(request.getSession().getServletContext());
        // 设置编码
        multipartResolver.setDefaultEncoding("utf-8");
          // 判断 request 是否有文件上传
        if(multipartResolver.isMultipart(request)){
             // 强转换成多部分request
            MultipartHttpServletRequest  multiRequest = (MultipartHttpServletRequest)request;
            //获取所有文件
            Iterator<String>  iter = multiRequest.getFileNames();
            while(iter.hasNext()){
                String next = (String)iter.next();
                //next:file
                    MultipartFile file = multiRequest.getFile(next);
                    //file: org.springframework.web.multipart.commons.CommonsMultipartFile@2e574e38
                if(file != null){
                    String fileName = "demoUpload" + file.getOriginalFilename();
                    String path = "E:/" + fileName;
                    File localFile = new File(path);
                    file.transferTo(localFile);
                }

            }



        }
        return "/success";
    }
}

jsp

<form name="userForm" action="/springMVC1/file/upload1" method="post"enctype="multipart/form-data" >
        上传文件方式1:<input type="file" name="file">
        <input type="submit" value="上传" >
    </form>

        <form name="userForm" action="/springMVC1/file/upload2" method="post" enctype="multipart/form-data" >
        上传文件方式2:<input type="file" name="file1">
        <input type="submit" value="上传" >
    </form>
posted on 2017-04-13 10:55  2637282556  阅读(123)  评论(0编辑  收藏  举报