package com.xiangshuai.controller;
    import java.io.File;
    
    import java.io.IOException;
   
import javax.servlet.http.HttpServletRequest;
    import org.springframework.stereotype.Controller;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import org.springframework.web.bind.annotation.RequestParam;
    
    import org.springframework.web.multipart.MultipartFile;
   
    /***
    
    *
    
    * @author xiangshuai
    
    * springmvc 单和多文件上传
    
    * 所需额外JAR 包 : commons-fileupload-1.2.2.jar 和  commons-io-1.3.2.jar
    
    * dispatcherServlet-servlet.xml 中需配置如下bean:
    
    *     <!– 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver –>
    
    <bean id=”multipartResolver”
    
    class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”>
    
    <!– 上传文件大小上限,单位为字节(10MB) –>
    
    <property name=”maxUploadSize”>
    
    <value>10485760</value>
    
    </property>
    
    <!– 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 –>
    
    <property name=”defaultEncoding”>
    
    <value>UTF-8</value>
    
    </property>
    
    </bean>
    
    * 项目所在地: E:\学习文档子目录压缩\框架\springmvc\文件上传\springmvc2.zip 和
    
    * 我的网盘\我的笔记\学习文档子目录压缩\框架\springmvc\文件上传\springmvc2.zip
    
    */
    
    @Controller
    
    @RequestMapping(“/upLoad”)
    
    public class FileUpload {
    
    
    @RequestMapping(“/dFileLoad”)
    
    //用 MultipartFile 来接受上传的文件
    
    public String dFileLoad(@RequestParam(“dUploadFile”) MultipartFile file,HttpServletRequest request){
    
    
    try {
    
    
    if(file.getSize()>0){
    
    
    String filename = file.getOriginalFilename();
    
    //限制文件上传的类型
    
    if(filename.endsWith(“jpg”)||filename.endsWith(“.doc”)||filename.endsWith(“.docx”)){
    
    
    File dir = new File(“D:”+File.separatorChar+”temp”);
    
    if(!dir.exists()){
    
    
    dir.mkdir();
    
    }
    
    System.out.println(dir.getAbsolutePath());
    
    File mbfile= new File(dir.getAbsolutePath()+File.separatorChar+filename);
    
    //将 file 复制给 mbfile
    
    file.transferTo(mbfile);
    
    }else {
    
    
    request.setAttribute(“filename”, file.getOriginalFilename());
    
    request.setAttribute(“message1”, “文件必须以 jpg或doc或docx开头”);
    
    return “fileNull”;
    
    }
    
    }else{
    
    
    request.setAttribute(“filename”, file.getOriginalFilename());
    
    return “fileNull”;
    
    }
    } catch (IllegalStateException e) {
    
    
    // TODO Auto-generated catch block
    
    e.printStackTrace();
    
    } catch (IOException e) {
    
    
    // TODO Auto-generated catch block
    
    e.printStackTrace();
    
    }
    
    return “model”;
    
    }
    
    /**
    
    *
    
    * @param loginName  : 用来创建在temp目录下 的子目录名
    
    * @param files  :接受文件数组
    
    * @param request
    
    * @return
    
    */
    
    @RequestMapping(“/duoFilesLoad”)
    
    //用 MultipartFile[]  来接受上传的多个文件
    
    public String duoFilesLoade(@RequestParam(“loginName”) String loginName,@RequestParam(“dUploadFile”) MultipartFile[] files,HttpServletRequest request){
    
    
    try {
    
    
    File dir = new File(“D:”+File.separatorChar+”temp”+File.separatorChar+loginName);
    
    if(!dir.exists()){
    
    
    dir.mkdirs();
    
    }
    
    boolean flag=true;
    
    for (int i=0;i<files.length; i++) {
    
    
    MultipartFile file=files[i];
    
    String filename = file.getOriginalFilename();
    
    if(filename!=null && !””.equals(filename.trim())){
    
    
    flag=false;
    
    if(filename.endsWith(“jpg”)||filename.endsWith(“.doc”)||filename.endsWith(“.docx”)){
    
    
    System.out.println(dir.getAbsolutePath());
    
    File mbfile= new File(dir.getAbsolutePath()+File.separatorChar+filename);
    
    //将 file 复制给 mbfile
    
    file.transferTo(mbfile);
    
    }else {
    
    
    request.setAttribute(“filename”, file.getOriginalFilename());
    
    request.setAttribute(“message1”, “文件必须以 jpg或doc或docx开头”);
    
    return “fileNull”;
    
    }
    
    }
    }
    
    // 如果一个文件也没有上传
    
    if(flag){
    
    
    return “fileNull”;
    
    }
    
    } catch (IllegalStateException e) {
    
    
    // TODO Auto-generated catch block
    
    e.printStackTrace();
    
    } catch (IOException e) {
    
    
    // TODO Auto-generated catch block
    
    e.printStackTrace();
    
    }
    
    return “model”;
    
    }
    
    }
    
   
 
