zoukankan      html  css  js  c++  java
  • struts2的多个文件上传

                成功效果图:                

    上篇文章描述了单个文件的上传和配置,下面主要讲解下不同的地方:

    index.jsp

     <head>  
        <script type="text/javascript">
            function check(){
                var file = document.getElementsByName("file");    
                var filename = document.getElementsByName("fileName");
                var filetype = document.getElementsByName("fileType");
                for(var i =0;i<file.length;i++){
                    if(file[i].value !=""){
                          var f = file[i].value ;     
                          var type = f.substr(f.lastIndexOf(".")).toLowerCase();
                        var name = f.substr(f.lastIndexOf("\"));
                        filename[i].value = name;
                        filetype[i].value = type;                        
                      }else{
                          alert("请选择文件");
                        return false;    
                      }        
                }
                return true;
            }
        </script>
      </head>
      
      <body>    
        <p>stuts 2 多文件上传实例 </p>
        ${requestScope.typeError}    
          <form action="/uploadMore.do" method="post" enctype="multipart/form-data" onsubmit="return check();">
           上传文件1:<input type="file" name="file" /><br>
                    <input type="hidden" name="fileType"/><br>
                    <input type="hidden" name="fileName"/><br>
         上传文件2:<input type="file" name="file" /><br>
                <input type="hidden" name="fileType"/><br>    
                <input type="hidden" name="fileName"/><br>
               <input type="submit" value="提交"/>
          </form>    
      </body>

    struts.xml

     <package name="uploadMoreFile" extends="struts-default">    
          <!--多文件上传  -->    
             <action name="uploadMore" class="com.nn.upload.UploadMoreAction" method="uploadMore">     
                 <interceptor-ref name="fileUpload">
                    <param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/pjpeg</param>
                </interceptor-ref>
                <interceptor-ref name="defaultStack"/>           
                   <param name="savePath">/upload</param> <!-- 保存的真实路径 -->
                   <result name="success">/successMore.jsp</result>
                   <result name="input">/index.jsp</result>                              
             </action>
         </package>
    UploadMoreAction.java
    public class UploadMoreAction extends ActionSupport {
        private File[] file;
        private String[]  fileName;
        private String[] fileType;
     
        public String  uploadMore(){
            String realpath = ServletActionContext.getServletContext().getRealPath("/upload");        
            if (this.file.length > 0) {
                String[] name = this.getFileName();
                for(int i =0;i<file.length;i++){
                    SimpleDateFormat  df = new SimpleDateFormat("yyyyMMddHHmmss");          
                    name[i] = df.format(new Date())+name[i].substring(1); //获取文件名称,去掉,并添加时间
                    File savefile = new File(new File(realpath), name[i]);
                    if (!savefile.getParentFile().exists())
                        savefile.getParentFile().mkdirs();
                    try {
                        FileUtils.copyFile(file[i], savefile);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    ActionContext.getContext().put("message", "文件上传成功!");
                }
                //this.setFileName(name); 
            }
            return "success";
         }   
    }
    
    

    successMore.jsp

      <body>
          ${requestScope.message}<br>
        <s:iterator value="fileName" status="stuts"> 
             文件名称:  <s:property value="fileName[#stuts.index]"/><br>     
             文件为:   <img src="${pageContext.request.contextPath}/<s:property value="'upload/'+fileName[#stuts.index]"/>"><br>
        </s:iterator>
        <s:debug></s:debug>
      </body>

  • 相关阅读:
    Aizu 0033
    Aizu 0118
    【思维】贪心+细节——cf1361B
    【思维】构造+凸包+向量叉积——LEETCODE 游乐园的迷宫
    【思维】三元环计数+鸽笼定理/贪心——LEETCODE 游乐园的游览计划 好题
    dp+线性筛——LEETCODE切分数组
    【经典】带障碍的铺砖块——LEETCODE 覆盖
    【思维】树形dp+构造——leetcode二叉树任务调度
    【思维】状压dp—— 2020 联想杯 M
    【思维】建图+排列组合+预处理+最短路—— 2020 联想杯 E
  • 原文地址:https://www.cnblogs.com/estellez/p/3968194.html
Copyright © 2011-2022 走看看