zoukankan      html  css  js  c++  java
  • struts1文件上传的操作汇总

     将struts1文件上传的操作汇总了一下,包括单文件上传和多文件上传,内容如下,留作备忘:

     Struts2实现文件上传的文章(http://blog.csdn.net/itwit/article/details/7031785

    1、单文件上传

    1)JSP页面(singleFileUpload.jsp)

    1. <%@page pageEncoding = "UTF-8"%>  
    2.   
    3. <h1>  
    4.     文件上传  
    5. </h1>  
    6. <hr />  
    7. <form action="upload.action" method="post" enctype="multipart/form-data">  
    8.     name:  
    9.     <input type="text" name="name" />  
    10.     <br />  
    11.     upload:  
    12.     <input type="file" name="file" />  
    13.     <br />  
    14.     <input type="submit" value="上传" />  
    15. </form>  

    操作点:enctype="multipart/form-data"


    2)Form(UploadForm)

    1. package fileUpload.singleFileUpload.form;  
    2.   
    3. import org.apache.struts.action.ActionForm;  
    4. import org.apache.struts.upload.FormFile;  
    5.   
    6. public class UploadForm extends ActionForm {  
    7.   
    8.     private static final long serialVersionUID = 1L;  
    9.   
    10.     private String name;  
    11.       
    12.     private FormFile file;  
    13.   
    14.     public String getName() {  
    15.         return name;  
    16.     }  
    17.   
    18.     public void setName(String name) {  
    19.         this.name = name;  
    20.     }  
    21.   
    22.     public FormFile getFile() {  
    23.         return file;  
    24.     }  
    25.   
    26.     public void setFile(FormFile file) {  
    27.         this.file = file;  
    28.     }  
    29. }  

    操作点:Struts1提供了一个FormFile类来处理文件上传操作,另外注意,属性name,file名字必须与jsp页面一致,否则会报空指针。

    3)Action(UploadAction)

    1. package fileUpload.singleFileUpload.action;  
    2.   
    3. import java.io.FileOutputStream;  
    4. import javax.servlet.http.HttpServletRequest;  
    5. import javax.servlet.http.HttpServletResponse;  
    6. import org.apache.struts.action.Action;  
    7. import org.apache.struts.action.ActionForm;  
    8. import org.apache.struts.action.ActionForward;  
    9. import org.apache.struts.action.ActionMapping;  
    10. import org.apache.struts.upload.FormFile;  
    11.   
    12. import fileUpload.singleFileUpload.form.UploadForm;  
    13.   
    14.   
    15. public class UploadAction extends Action {  
    16.   
    17. // @Override  
    18. public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {  
    19.   
    20.    UploadForm uf = (UploadForm)form;  
    21.    String name = uf.getName();  
    22.    FormFile file = uf.getFile();  
    23.    System.out.println("name=" + name);  
    24.    String filename = file.getFileName();  
    25.    System.out.println("fileName=" + filename);  
    26.     
    27.    FileOutputStream fos = new FileOutputStream("d:\["+name+"]" + filename); //创建输出流  
    28.    fos.write(file.getFileData()); //写入  
    29.    fos.flush();//释放  
    30.    fos.close(); //关闭  
    31.    return mapping.findForward("success");  
    32.  }  
    33. }  

    操作点:FormFile类的方法

    4)Struts配置文件(struts-config.xml)

    1. <!-- 配置 单个上传 -->  
    2. <form-bean name="uploadForm" type="fileUpload.singleFileUpload.form.UploadForm" />  
    1. <!-- 配置 单个上传 -->  
    2. <action path="/upload" type="fileUpload.singleFileUpload.action.UploadAction" name="uploadForm" scope="request">  
    3.     <forward name="success" path="/singleFileUpload.jsp" />  
    4. </action>  
    1. <!-- 配置文件上传大小 -->  
    2. <!-- 规定了最大上传大小是2M,如果设置成-1则大小无限制了 -->  
    3. <controller maxFileSize="2M" />  

    操作点:controller maxFileSize用来配置上传文件的大小,可根据实际情况配置,设置成-1则表示无限制。其位置必须放在</action-mappings>和<message-resources>之间

    2、多文件上传

    1)JSP页面(mutityFileUpload.jsp)(从网上获得的代码,可增可减,不错)

    1. <%@ page pageEncoding="utf-8"%>  
    2. <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>  
    3. <html>  
    4.     <head>  
    5.         <title>上传任意多个文件(总大小不能超过2M)</title>  
    6.         <script language="javascript">  
    7.               // 在DOM中插入一个上传文件列表项(div元素)和一个<input type="file"/>元素  
    8.               function insertNextFile(obj)   
    9.               {   
    10.             // 获取上传控制个数  
    11.                   var childnum = document.getElementById("files").getElementsByTagName("input").length;         
    12.                   var id = childnum - 1;  
    13.                   var fullName = obj.value;  
    14.                   // 插入<div>元素及其子元素  
    15.                   var fileHtml = '';  
    16.                   fileHtml += '<div  id = "file_preview' + id + '" style ="border-bottom: 1px solid #CCC;">';  
    17.                   fileHtml += '<img  width =30 height = 30 src ="images/file.gif" title="' + fullName + '"/>';  
    18.                   fileHtml += '<a href="javascript:;" onclick="removeFile(' + id + ');">删除</a>   ';  
    19.                   fileHtml += fullName.substr(fullName.lastIndexOf('\')+1) +'  </div>';  
    20.                 
    21.                   var fileElement = document.getElementById("files_preview");  
    22.                   fileElement.innerHTML = fileElement.innerHTML + fileHtml;      
    23.                   obj.style.display = 'none';   // 隐藏当前的<input type=”file”/>元素  
    24.                   addUploadFile(childnum);  // 插入新的<input type=”file”/>元素  
    25.               }  
    26.               //  插入新的<input type=”file”/>元素,适合于不同的浏览器(包括IE、FireFox等)  
    27.               function addUploadFile(index)  
    28.               {  
    29.                   try  // 用于IE浏览器  
    30.                   {     
    31.                       var uploadHTML = document.createElement( "<input type='file' id='file_" + index +   
    32.                                               "' name='file[" + index + "]' onchange='insertNextFile(this)'/>");  
    33.                       document.getElementById("files").appendChild(uploadHTML);  
    34.                   }  
    35.                   catch(e)  // 用于其他浏览器  
    36.                   {   
    37.                       var uploadObj = document.createElement("input");  
    38.                       uploadObj.setAttribute("name""file[" + index + "]");  
    39.                       uploadObj.setAttribute("onchange""insertNextFile(this)");  
    40.                       uploadObj.setAttribute("type""file");  
    41.                       uploadObj.setAttribute("id""file_" + index);  
    42.                       document.getElementById("files").appendChild(uploadObj);  
    43.                   }  
    44.               }  
    45.               function removeFile(index)  // 删除当前文件的<div>和<input type=”file”/>元素  
    46.               {  
    47.                   document.getElementById("files_preview").removeChild(document.getElementById("file_preview" + index));   
    48.                   document.getElementById("files").removeChild(document.getElementById("file_" + index));      
    49.               }  
    50.               function showStatus(obj)  // 显示“正在上传文件”提示信息  
    51.               {  
    52.                 document.getElementById("status").style.visibility="visible";  
    53.               }  
    54.         </script>  
    55.     </head>  
    56.     <body>  
    57.         <html:form enctype="multipart/form-data" action="multiUpload">  
    58.             <span id="files"> <%--  在此处插入用于上传文件的input元素 --%>   
    59.                <input type="file" id="file_0" name="file[0]" onchange="insertNextFile(this)" /> </span>    
    60.                <html:submit value=" 上传 " onclick="showStatus(this);" />  
    61.         </html:form>  
    62.         <p>  
    63.         <div id="status" style="visibility: hidden; color: Red">  
    64.             正在上传文件  
    65.         </div>  
    66.         <p>  
    67.             <%--  在此处用DOM技术插入上传文件列表项  --%>  
    68.         <div id="files_preview"  
    69.             style=" 500px; height: 500px; overflow: auto"></div>  
    70.     </body>  
    71. </html>  


    2)Form(UploadMoreForm)

    1. package fileUpload.mutityFileUpload.form;  
    2.   
    3. import java.util.ArrayList;  
    4. import java.util.List;  
    5.   
    6. import org.apache.struts.action.ActionForm;  
    7. import org.apache.struts.upload.FormFile;  
    8.   
    9. public class UploadMoreForm extends ActionForm{  
    10.   
    11.     private static final long serialVersionUID = 1L;  
    12.     private List<FormFile> myFiles = new ArrayList<FormFile>();  // 用于保存不定数量的FormFile对象  
    13.         
    14.     public FormFile getFile(int i)  // 索引属性  
    15.     {  
    16.         return myFiles.get(i);  
    17.     }  
    18.     public void setFile(int i, FormFile myFile)  // 索引属性  
    19.     {  
    20.         if (myFile.getFileSize() > 0)  // 只有上传文件的字节数大于0,才上传这个文件  
    21.         {  
    22.             myFiles.add(myFile);  
    23.         }  
    24.     }  
    25.     public int getFileCount()  // 获得上传文件的个数  
    26.     {  
    27.         return myFiles.size();  
    28.     }  
    29.   
    30.   
    31. }  


    3)Action(UploadMoreAction)

    1. package fileUpload.mutityFileUpload.action;  
    2.   
    3. import java.io.FileOutputStream;  
    4.   
    5. import javax.servlet.http.HttpServletRequest;  
    6. import javax.servlet.http.HttpServletResponse;  
    7.   
    8. import org.apache.struts.action.Action;  
    9. import org.apache.struts.action.ActionForm;  
    10. import org.apache.struts.action.ActionForward;  
    11. import org.apache.struts.action.ActionMapping;  
    12. import org.apache.struts.upload.FormFile;  
    13.   
    14. import fileUpload.mutityFileUpload.form.UploadMoreForm;  
    15.   
    16. public class UploadMoreAction extends Action {  
    17.       
    18.     public ActionForward execute(ActionMapping mapping, ActionForm form,  
    19.             HttpServletRequest request, HttpServletResponse response)  
    20.     {  
    21.         UploadMoreForm umForm = (UploadMoreForm) form;  
    22.         int count = 0;  
    23.         try  
    24.         {  
    25.             count = umForm.getFileCount();   // 获得上传文件的总数  
    26.             for (int i = 0; i < count; i++)  
    27.             {  
    28.                 FormFile file = umForm.getFile(i);   
    29.                 System.out.println(file.getFileName());  
    30.                 FileOutputStream fos = new FileOutputStream("d:\" + file.getFileName()); //创建输出流  
    31.                 fos.write(file.getFileData()); //写入  
    32.                 fos.flush();//释放  
    33.                 fos.close(); //关闭  
    34.                   
    35.             }  
    36.         }  
    37.         catch (Exception e)  
    38.         {  
    39.             e.printStackTrace();  
    40.         }  
    41.         return null;  
    42.     }  
    43.   
    44.   
    45. }  


    4)Struts配置文件(struts-config.xml)

    1. <!-- 配置 多个上传 -->  
    2. <form-bean name="uploadMoreForm" type="fileUpload.mutityFileUpload.form.UploadMoreForm" />  
    1. <!-- 配置 多个上传 -->  
    2. <action path="/multiUpload" type="fileUpload.mutityFileUpload.action.UploadMoreAction" name="uploadMoreForm" scope="request">  
    3.     <forward name="success" path="/mutityFileUpload.jsp" />  
    4. </action>  
      1. <!-- 配置文件上传大小 -->  
      2. <!-- 规定了最大上传大小是2M,如果设置成-1则大小无限制了 -->  
      3. <controller maxFileSize="-1" />  
  • 相关阅读:
    『PyTorch』第二弹_张量
    大数据技术之_12_Sqoop学习_Sqoop 简介+Sqoop 原理+Sqoop 安装+Sqoop 的简单使用案例+Sqoop 一些常用命令及参数
    HBase 构建 Scanner 体系图解
    HBase 默认刷写文件 flush_compact.xml 注释解析
    Vim 命令、操作、快捷键全集
    10个在UNIX或Linux终端上快速工作的建议
    如何三招帮你排查Linux中的硬件问题
    介绍一些有趣的MySQL pager命令
    MySQL数据库select语句的使用方法
    能够在Linux系统中运行的5款大型耐玩游戏
  • 原文地址:https://www.cnblogs.com/xigua1hao/p/3634522.html
Copyright © 2011-2022 走看看