`
xuehongliang
  • 浏览: 95175 次
  • 性别: Icon_minigender_1
  • 来自: 辽宁
社区版块
存档分类
最新评论

struts实现上传篇

阅读更多

做了一个上传下载的程序,还有很多地方需要改进的地方,还是先贴上来吧,以后在用到的时候做个参照:

上传:用到struts提供的FormFile类,以及html:file标签.在设计上传页面的时候有多个上传浏览框.我这回用了一个土方法在页面上进行了循环赋值,所以在ActionForm中FormFile定义成数组,不知道还有没有更好的方法.

java 代码
  1. public class UploadAction extends Action {   
  2.   
  3. public ActionForward execute(ActionMapping mapping, ActionForm form,   
  4.    HttpServletRequest request, HttpServletResponse response)   
  5.    throws Exception {   
  6.   
  7.   int totalFileSize = 0;   
  8.   List list = new ArrayList();   
  9.   // 在web.xml中读取系统上传默认路径   
  10.   String path = servlet.getInitParameter("file-upload");   
  11.   // 获取页面信息,得到上传文件的相关信息.   
  12.   UploadForm upform = (UploadForm) form;   
  13.   // FormFile是struts提供的处理上传的类   
  14.   FormFile[] file = upform.getFile();   
  15.   for (int i = 0; i < file.length; i++) {   
  16.    // 取得上传文件的文件名.   
  17.    String fileName = file[i].getFileName();   
  18.    // 取得上传文件的大小,转成字符串类型的目的是为了在页面上显示文件大小.   
  19.    String size = file[i].getFileSize()+"";   
  20.       
  21.    totalFileSize += file[i].getFileSize();   
  22.    if (fileName.equals("") || fileName.equals(null)) {   
  23.     request.setAttribute("total",totalFileSize);   
  24.     request.setAttribute("filearraylist",list);   
  25.     return mapping.findForward("success");   
  26.    } else {   
  27.     // 主要方法,上传文件   
  28.     uploadFile(file[i], path, fileName, size, upform, request);   
  29.   
  30.     FileInfo fi = new FileInfo();   
  31.     fi.setFileName(fileName);   
  32.     fi.setFileSize(size);   
  33.        
  34.     list.add(fi);   
  35.   
  36.     // 上传成功后弹出上传成功对话框,在这里加一个标志,在页面进行判断用.   
  37.     request.setAttribute("flags"true);   
  38.   
  39.     // 取得文件上传路径   
  40.     File fileList = new File(path);   
  41.     // 取得所有文件名   
  42.     String[] files = fileList.list();   
  43.     // 将文件名放入request范围在页面显示用.   
  44.     request.setAttribute("fileList", files);   
  45.    }   
  46.   }   
  47.   request.setAttribute("total",totalFileSize);   
  48.   request.setAttribute("filearraylist",list);   
  49.   return mapping.findForward("success");   
  50.  }   
  51.   
  52.  private void uploadFile(FormFile file, String path, String fileName,   
  53.    String size, UploadForm upform, HttpServletRequest request) {   
  54.   try {   
  55.    InputStream is = file.getInputStream();   
  56.    OutputStream os = new FileOutputStream(path + "/" + fileName);   
  57.    // 文件大小   
  58.    byte[] buffer = new byte[20480];   
  59.    while ((is.read(buffer, 0, buffer.length)) != -1) {   
  60.     os.write(buffer, 0, buffer.length);   
  61.    }   
  62.    os.flush();   
  63.    file.destroy();   
  64.    // 关闭流   
  65.    close(is, os);   
  66.   } catch (FileNotFoundException e) {   
  67.    e.printStackTrace();   
  68.   } catch (IOException e) {   
  69.    e.printStackTrace();   
  70.   }   
  71.  }   
  72.   
  73.  private void close(InputStream is, OutputStream os) throws IOException {   
  74.   is.close();   
  75.   os.close();   
  76.  }   
  77.   
  78. }   
  79.   
  80. public class UploadForm extends ActionForm {   
  81.   
  82.  private FormFile[] file = new FormFile[4];   
  83.   
  84.  private String fileName;   
  85.   
  86.  private String size;   
  87.   
  88.  public FormFile[] getFile() {   
  89.   return file;   
  90.  }   
  91.   
  92.  public void setFile(FormFile[] file) {   
  93.   this.file = file;   
  94.  }   
  95.   
  96.  public String getFileName() {   
  97.   return fileName;   
  98.  }   
  99.   
  100.  public void setFileName(String fileName) {   
  101.   this.fileName = fileName;   
  102.  }   
  103.   
  104.  public String getSize() {   
  105.   return size;   
  106.  }   
  107.   
  108.  public void setSize(String size) {   
  109.   this.size = size;   
  110.  }   
  111.   
  112. }   
  113.   

 upload页面:

jsp 代码
  1. <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>  
  2. <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>  
  3. <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>  
  4.   
  5. <%@ page language="java" contentType="text/html; charset=GB2312"%>  
  6.   
  7. <logic:present name="flags">  
  8. <script language="javascript" >alert("上传成功!")</script>  
  9. </logic:present>  
  10. <html:html>  
  11. <head>  
  12.     <title>test struts upload file</title>  
  13. </head>  
  14. <body>  
  15. <html:errors/>  
  16. <html:messages id="messages" message="true">  
  17.  <LI><bean:write name="messages" /></LI>  
  18. </html:messages>  
  19. <html:form action="upload" enctype="multipart/form-data">  
  20.  <table cellpadding="0" cellspacing="0" border="0" >  
  21.   <tr>  
  22.    <td>  
  23.     <table height="80%" width="80%">  
  24.      <tr>  
  25.       <td bgcolor="#ddcc">  
  26.        选择文件   
  27.       </td>  
  28.      </tr>  
  29.     </table>  
  30.    </td>  
  31.   </tr>  
  32.   <tr height="50">  
  33.    <td width=2%>  
  34.     <table height="80%" width="80%" cellpadding="0" cellspacing="0" border="0">  
  35.      <tr>  
  36.       <% for(int i=0;i<4;i++){%>  
  37.       <td>  
  38.        <html:file property='<%="file["+i+"]"%>' />  
  39.       </td>  
  40.       <%   
  41.       }   
  42.       %>  
  43.      </tr>  
  44.     </table>  
  45.    </td>  
  46.   </tr>  
  47.   <tr>  
  48.    <td>  
  49.     <html:submit onclick="return(confirm('你确认要上传文件吗?'))">上传文件</html:submit>  
  50.    </td>  
  51.   </tr>  
  52.   <tr>  
  53.    <td>  
  54.     <table height="80%" width="80%">  
  55.      <tr bgcolor="#ddcc">    
  56.       <td width="50%">文件名</td>  
  57.       <td width="50%">文件大小(byte)</td>  
  58.      </tr>  
  59.      <tr>  
  60.      <logic:empty name="filearraylist" scope="request">  
  61.       <tr><td width="50%">总计</td><td width="50%">0</td></tr>  
  62.      </logic:empty>  
  63.      <logic:notEmpty name="filearraylist" scope="request">  
  64.      <logic:iterate id="element" name="filearraylist" scope="request">  
  65.         <tr>  
  66.         <td width="50%"><bean:write name="element" property="fileName" /></td>  
  67.         <td width="50%"><bean:write name="element" property="fileSize" /></td>  
  68.         </tr>  
  69.      </logic:iterate>  
  70.      <tr><td>总计</td><td><bean:write name="total"/></td></tr>  
  71.      </logic:notEmpty>  
  72.      </tr>  
  73.     </table>  
  74.    </td>  
  75.   </tr>  
  76.  </table>  
  77. </html:form>  
  78. <br/><br/><br/>  
  79. <%int i=0;%>  
  80. <logic:notEmpty name="fileList" scope="request">  
  81. <table cellpadding="0" cellspacing="0" border="0">  
  82.  <tr>  
  83.   <td>  
  84.     <logic:iterate id="element" name="fileList" scope="request">  
  85.     <%= ++i%>  
  86.     <a href="<html:rewrite page='/downLoad.do' />?filename=<bean:write name='element' />"><bean:write name="element" /></a><br/>  
  87.     </logic:iterate>  
  88.   </td>  
  89.  </tr>  
  90. </table>  
  91. </logic:notEmpty>  
  92. </body>  
  93. </html:html>  
分享到:
评论

相关推荐

    struts2实现文件上传下载

    创建`UploadAction`类,定义`List&lt;FileInfo&gt;`字段,并实现上传文件的方法。例如: ```java public class UploadAction extends ActionSupport { private List&lt;FileInfo&gt; files; // getters and setters... ...

    Android+struts2实现图片上传

    本教程将探讨如何通过集成Struts2框架在Java后端实现Android客户端的图片上传功能。首先,我们需要了解Android客户端的文件操作以及如何使用HTTP请求将数据发送到服务器。 在Android客户端,我们通常使用`Intent`来...

    struts与hibernate实现文件的上传与动态下载

    本篇文章将详细讲解如何利用Struts2.2和Hibernate3.6实现文件的上传与动态下载。 **一、文件上传** 1. **环境配置**:首先,你需要一个集成开发环境,例如MyEclipse8.6,并安装所需的Struts2.21、JUnit4.8.2以及...

    Struts上传文件实现代码

    本篇文章将深入探讨如何在Struts2框架下实现文件上传的代码实践。 首先,我们需要在Struts2的配置文件(struts.xml)中配置一个Action,该Action将处理文件上传请求。在Action配置中,我们需要指定一个result类型为...

    struts2文件上传下载源代码

    这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件到服务器。在Struts2中,这通常通过表单实现,表单包含一个`&lt;input type="file"&gt;`...

    Struts2实现多文件上传

    本篇文章将详细介绍如何使用Struts2来实现这一功能。 首先,我们需要理解Struts2的上传机制。在Struts2中,文件上传主要依赖于Apache的Commons FileUpload组件,该组件处理HTTP请求中的multipart/form-data类型的...

    struts文件上传大小限制问题

    本篇文章将详细探讨Struts文件上传大小限制的问题。 首先,我们需要理解文件上传的基本流程。在Struts中,当用户通过表单提交文件时,数据会被封装到`ActionForm`对象中,然后由Struts的控制器组件处理。默认情况下...

    struts实现文件上传与下载

    本篇文章将深入探讨如何在Struts框架下实现文件的上传与下载功能。 ### 文件上传 1. **准备环境**:首先,确保你的项目已经集成了Struts2框架,包括相关的jar包,如struts2-core、struts2-convention-plugin等,并...

    Struts2 上传和下载功能

    这篇博客文章可能详细讨论了如何在Struts2框架中实现这两个功能。 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,这是一个Apache提供的用于处理HTTP多部分请求的工具。以下是实现文件上传的基本步骤: ...

    struts2 实现文件、图片 上传

    Struts2是一个非常流行的Java Web...本篇文章将详细介绍如何在Struts2中实现这一功能。 首先,我们需要在Struts2的配置文件(struts.xml)中添加相应的action配置,以处理文件上传请求。以下是一个简单的示例: ```xml ...

    uploadify struts2实现图片上传

    本篇文章将深入探讨如何使用uploadify这款jQuery插件与Struts2框架结合,实现图片的上传功能。 首先,uploadify是一款强大的前端文件上传插件,它基于JavaScript库jQuery,提供了丰富的自定义选项和友好的用户界面...

    struts上传多文件

    本篇文章将深入讲解如何在Struts框架中实现多文件上传。 首先,了解Struts2文件上传的基本原理。Struts2使用了Apache的Commons FileUpload库来处理文件上传。在Struts2的Action类中,我们通常会有一个或多个`File`...

    Struts2文件上传

    本篇文章将详细讲解如何利用Struts2框架来实现头像上传功能。 首先,我们需要在Struts2配置文件(struts.xml)中添加相关的action配置,以便处理文件上传请求。一个基本的配置可能如下所示: ```xml ...

    Struts2实现文件上传案例

    ### Struts2实现文件上传案例 #### 概述 本文将详细介绍如何利用Struts2框架实现文件上传功能。Struts2是Apache软件基金会的一个开源Web...希望这篇详细的案例能够帮助大家更好地理解和掌握Struts2中的文件上传机制。

    实现Struts上传多个文件

    本篇内容将详细介绍如何在Struts项目中实现多文件上传,并提供相应的代码示例。 #### 1. 前提条件与依赖 为了能够成功地在Struts项目中实现多文件上传功能,首先需要确保以下前提条件得到满足: - **Java版本**:...

    Struts2批量上传文件

    在本篇文章中,我们将深入探讨如何利用Struts2实现批量文件上传,以及涉及的相关技术与最佳实践。 首先,我们需要了解Struts2的核心概念——`Interceptor(拦截器)`,这是Struts2处理请求的核心组件,用于在Action...

    Struts上传,已经处理好乱码问题

    本篇文章将详细探讨如何在Struts中处理文件上传并解决乱码问题。 首先,我们需要了解Struts文件上传的基本原理。在Struts中,文件上传是通过`Commons FileUpload`库来实现的,它是Apache Commons项目的一部分,专门...

    struts2实现文件上传

    本篇将深入探讨如何在Struts2中实现文件上传功能。 首先,我们需要在前端创建一个HTML表单,允许用户选择要上传的文件。表单应包含`enctype="multipart/form-data"`属性,以启用文件上传支持: ```html ``` ...

    struts2实现多文件同时上传

    本篇文章将深入探讨如何在Struts2框架下实现这一功能,主要涉及的技术包括Struts2的Action、Interceptor、Result以及FileUpload插件。 首先,要实现多文件上传,我们需要引入Apache Commons FileUpload库,这是一个...

    Struts2 实现文件简单上传

    这篇博文主要探讨了如何在Struts2框架下实现简单的文件上传功能。 首先,我们需要了解Struts2中的Action类。Action类是处理用户请求的核心组件,通常继承自`org.struts2.interceptor.FileUploadInterceptor`或实现...

Global site tag (gtag.js) - Google Analytics