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" />  
原文地址:https://www.cnblogs.com/xigua1hao/p/3634522.html