zoukankan      html  css  js  c++  java
  • SpringMVC文件上传

     1 1.在SpringMVC中的配置文件dispatcherServlet-servlet.xml中加入
     2 
     3     <!-- 配置MultipartResolver,用于上传文件,使用spring的CommonsMultipartResolver -->  
     4     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
     5             <property name="maxUploadSize" value="5000000"/>
     6             <property name="defaultEncoding" value="UTF-8"/>
     7     </bean>
     8 
     9 
    10 2.处理文件上传-单文件传-在controller类里添加
    11     //文件上传
    12     //添加用户时,为post请求,访问以下代码
    13     @RequestMapping(value="/adduser",method=RequestMethod.POST)
    14     public String add(@Validated User user,BindingResult bindingResult,MultipartFile attach,HttpServletRequest req){//紧跟validate之后写验证结果
    15         if(bindingResult.hasErrors()){
    16             System.out.println("@Validated User user-->"+user);
    17             //若有错误,直接掉转到add 视图
    18             return "user/add";
    19         }
    20         //判断文件是否为空
    21         if(!attach.isEmpty()){
    22             //指定文件上传位置
    23             String realPath =  req.getSession().getServletContext().getRealPath("/resources/upload");
    24             System.out.println("realPath===="+realPath);
    25             System.out.println("原始文件的名字"+attach.getOriginalFilename());
    26             System.out.println(attach.getContentType());
    27             System.out.println(attach.getName());//得到页面表单控件的值
    28             
    29             //建立空文件
    30             //File.separator="/",File.separator:路径自适应分隔符,适合其它操作系统, 
    31             File file = new File(realPath+File.separator+attach.getOriginalFilename());
    32             
    33             try {
    34                 FileUtils.copyInputStreamToFile(attach.getInputStream(), file);
    35                 //FileUtils.writeByteArrayToFile(file, attach.getBytes());
    36                 //attach.transferTo(file);
    37             } catch (Exception e) {
    38                 // TODO Auto-generated catch block
    39                 e.printStackTrace();
    40             }
    41             System.out.println(attach.getName()+" ======= "+attach.getOriginalFilename()+" ====== "+attach.getContentType());
    42         }
    43         userList.put(user.getUserName(), user);
    44         return "redirect:/user/userlist";
    45     }
    46     
    47     
    48 
    49 
    50 
    51 
    52 3.处理文件上传-多文件上传
    53 
    54     //添加用户时,为post请求,访问以下代码
    55     @RequestMapping(value="/adduser",method=RequestMethod.POST)
    56     public String add(@Validated User user,BindingResult bindingResult,@RequestParam("attachs") MultipartFile[] attachs,HttpServletRequest req){//紧跟validate之后写验证结果
    57         if(bindingResult.hasErrors()){
    58             //若有错误,直接掉转到add 视图
    59             return "user/add";
    60         }
    61         
    62         String realPath =  req.getSession().getServletContext().getRealPath("/resources/upload");
    63         System.out.println(realPath);
    64         //循环
    65         for(MultipartFile attach:attachs){
    66             if(!attach.isEmpty()){//判断文件是否为空
    67                 File file = new File(realPath+"/"+attach.getOriginalFilename());
    68                 try {
    69                     //FileUtils.copyInputStreamToFile(attach.getInputStream(), file);
    70                     //FileUtils.writeByteArrayToFile(file, attach.getBytes());
    71                     attach.transferTo(file);
    72                 } catch (Exception e) {
    73                     // TODO Auto-generated catch block
    74                     e.printStackTrace();
    75                 }
    76             }
    77         }
    78         userList.put(user.getUserName(), user);
    79         return "redirect:/user/userlist";
    80     }
    81 
    82 
    83 
    84 
    85 
    86 4.在add.jsp中的form表单中添加,如果是多文件上传就按照需求添加
    87     <!--单文件上传文件-->
    88     Attach:<input type="file" name="attach"/>
    89 
    90         <!--多文件上传文件,注意:attachs-->
    91             Attach1:<input type="file" name="attachs"/><br/>
    92         Attach2:<input type="file" name="attachs"/><br/>
    93         Attach3:<input type="file" name="attachs"/><br/>
    94         Attach4:<input type="file" name="attachs"/><br/>
  • 相关阅读:
    elasticsearch-5.1.1 安装的问题
    idea 新建New Module时Maven的列表加载不出来
    使用X-Pack插件来进行权限控制
    Groovy学习记录-------Groovy安装/配置
    学习使用Apollo配置中心
    Apollo配置中心介绍
    自定义的GitLab 头像无法正常显示以及URL总是指向localhost
    2020/2/19
    一九八四
    Python 进阶
  • 原文地址:https://www.cnblogs.com/fifiyong/p/5820086.html
Copyright © 2011-2022 走看看