`
kanpiaoxue
  • 浏览: 1777905 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

struts2 文件上传(多文件上传) upload

阅读更多

 (1)前面的的form JSP 页面
 <s:form id="formId" action="/operation/saveCompetitionProductReport.do" enctype="multipart/form-data" theme="simple">
 
 <table>
     <tr>
    <td colspan="4">关注度截图:
         <input type="file" name="pic"/></td>
     </tr>
     <tr>
    <td colspan="4">相关检索字:
      <input type="file"  name="pic"/></td>
     </tr>
 </table>
 
 <s:submit/><s:reset/>
 </s:form> 
  
 (2)struts.xml
 
   <interceptors>
   <interceptor-stack name="imgFileUpload">
    <interceptor-ref name="fileUpload">
     <param name="allowedTypes">image/jpeg,image/pjpeg,image/gif,image/x-png</param>
     <param name="maximumSize">204800</param>
    </interceptor-ref>
    <interceptor-ref name="defaultStack"/>
   </interceptor-stack>
     </interceptors> 
  
   <action name="saveCompetitionProductReport" class="operationAction" method="saveCompetitionProductReport">
   <interceptor-ref name="imgFileUpload"/>     <!-- ================= 拦截器的使用 ================ -->
   <result name="success">
    /jsp/operation/edit/MyJsp.jsp
   </result>
   <result name="error">/jsp/error.jsp</result>
  </action>  
  
 (3)Action
 /*-------------------------------------------------*/
 private static final int BUFFER_SIZE = 20 * 1024;//文件大小
 private File[] pic;  //对应 <input type="file"  name="pic"/>
 private String[] picFileName; //固定构成格式
 private String[] picContentType; //固定构成格式
 /*-------------------------------------------------*/
 
 //-------- setter / getter
   //.......... code here ............
 
 /**
  * 复制文件
  * @param src
  * @param dest
  */
 private static void copy(File src, File dest){
  try{
   InputStream in = null;
   OutputStream out = null;
   try{
    in = new BufferedInputStream(new FileInputStream(src),BUFFER_SIZE);
    out = new BufferedOutputStream(new FileOutputStream(dest),BUFFER_SIZE);
    byte[] buffer = new byte[1024];
    while(in.read(buffer) > 0){
     out.write(buffer);
    }
   }finally{
    if(null != in){
     in.close();
    }
    if(null != out){
     out.close();
    }
   }
  }catch(Exception e){
   logger.error("复制文件出错",e);
  }
 }

 /**
  * 得到文件的后缀名
  * @param fileName
  * @return
  */
 private static String getExtention(String fileName){
  int pos = fileName.lastIndexOf(".");
  return fileName.substring(pos);
 }
 
 
 
 public String saveCompetitionProductReport(){
  
  List<String> picUrlList = new ArrayList<String>();//图片在服务器上面的相对位置
  if(null != pic){
   for(int i = 0, j = pic.length; i<j; i++){
    String extention = getExtention(picFileName[i]);
    //  "/uploadImage" 是 项目下的文件夹,防止上传的文件 图片被成功上传之后,会存放到tomcat的项目/uploadImage 目录下
    String fileName = ServletActionContext.getServletContext().getRealPath("/uploadImage")+File.separator+new Date().getTime()+ Math.random() + extention;
    
    //System.out.println("before===================" + fileName +"\t" +picFileName[i]);
    File imageFile = new File(fileName);
    copy(pic[i], imageFile);
    
    String tmpFileName = fileName.substring(fileName.indexOf(File.separator +"uploadImage"));
    picUrlList.add(tmpFileName);
   }
   
   Boolean saveMainTableDataFlag = operationBusiness.saveCompetitionProductReport(this);
   if(saveMainTableDataFlag){//当主表保存成功的时候,开始保存明细
     //--------- code here
   }
   
  }
  
  return Action.ACTION_RESULT_SUCCESS;
 }  

分享到:
评论

相关推荐

    struts2实现文件上传下载

    首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在Action类中声明一个`List&lt;FileInfo&gt;`类型的字段,用于接收上传的文件...

    Struts2之struts2文件上传详解案例struts011

    在这个"Struts2之struts2文件上传详解案例struts011"中,我们将深入探讨如何实现这一功能。 首先,我们需要了解Struts2中的Action类,它是处理用户请求的核心组件。为了支持文件上传,我们需要创建一个继承自`org....

    struts2实现多文件上传下载

    文件上传比较多,多文件上传少一点 文件下载很少的,看似简单,实则不然 网上的Struts2进行的文件下载一般都是单文件或者固定的文件,并没有(很少)实现随意文件的下载的例子 提供多文件上传,上传成功后,提供...

    简单易懂的struts2文件上传

    在Struts2中,文件上传功能是一个常见的需求,例如用户可能需要上传图片、文档或其他类型的文件。本教程将深入浅出地讲解如何在Struts2中实现文件上传,并提供一个简单的实例来帮助理解。 1. **Struts2文件上传概述...

    struts2 文件上传

    Struts2 文件上传是Web开发中的一个重要功能,它允许用户通过网页上传文件到服务器。Struts2 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,提供了丰富的特性和强大的控制层功能,使得文件上传...

    Struts2文件上传源码

    6. **源码分析**: 要深入理解Struts2的文件上传机制,你需要查看Struts2的源码,特别是`org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest`和`org.apache.struts2.components.Form`这两个类。...

    struts2文件上传下载

    在Struts2框架中实现文件上传和下载功能,是Web开发中常见的需求。Struts2作为一个成熟的MVC框架,提供了简单的API和标记库来处理文件上传下载的业务逻辑。下面是基于给定文件内容的知识点详细说明。 ### Struts2...

    struts多文件上传

    在Struts1.2版本中,实现多文件上传是一项常见的需求,它允许用户在一次提交中上传多个文件,这对于数据交互、资源分享等场景非常实用。在本教程中,我们将深入探讨如何在Struts1.2中实现这一功能。 首先,理解多...

    struts2多文件的上传

    在本项目中,"struts2多文件的上传"实现了用户一次性上传多个文件的能力。 要理解这个功能,首先我们需要了解Struts2中的Action类和Interceptor(拦截器)。Action类是处理用户请求的核心,而Interceptor则用于处理...

    Struts2文件上传程序示例

    Struts2文件上传程序是一个典型的企业级Web应用开发中的功能,它允许用户通过网页将本地文件上传到服务器。Struts2作为一款强大的MVC(Model-View-Controller)框架,提供了丰富的功能支持,包括文件上传。这个示例...

    struts2实现多文件上传功能

    Struts2提供了完善的文件上传支持,让我们来详细探讨如何在Struts2中实现多文件上传。 首先,我们需要在Struts2的配置文件(struts.xml)中启用文件上传的支持。这通常涉及到添加`&lt;constant&gt;`标签来设置`struts....

    struts2实现的多个文件上传

    在处理文件上传时,Struts2提供了便捷的API和配置方式,使得开发人员能够轻松实现多文件上传的功能。下面将详细阐述如何使用Struts2来实现多个文件的上传。 首先,理解文件上传的基本原理。在HTTP协议中,文件上传...

    struts2 实现文件批量上传

    1. **文件上传组件**:在Struts2中,我们通常使用`Commons FileUpload`库来处理文件上传。这个库提供了处理多部分HTTP请求的能力,是Java中处理文件上传的标准库。我们需要在Struts2配置文件中引入对应的拦截器`...

    struts2文件上传

    Struts2 文件上传是Java Web开发中常见的功能,主要用于接收用户通过表单上传的文件。在Struts2框架中,虽然它自身不处理`multipart/form-data`类型的请求,但它依赖于第三方库,如Apache Commons FileUpload,来...

    Struts2文件批量上传

    在提供的压缩包`struts2_4`中,可能包含了多个示例项目,每个项目都展示了不同的文件上传实现方式或特定的处理逻辑。每个web包中的详细说明文档可以帮助你深入理解如何在实际应用中实现Struts2的文件批量上传功能。...

    struts2文件上传的两种方法

    Struts2提供了两种主要的文件上传方式:单文件上传和多文件上传。下面将详细介绍这两种方法及其相关知识点。 一、单文件上传 1. **配置Struts2核心过滤器**:首先,需要在web.xml中配置`struts2-convention-plugin...

    struts2 文件上传 测试通过版

    总结,Struts2中的文件上传功能涉及到Action类的编写、配置文件的设定、JSP页面的构造、文件上传处理以及安全措施等多个方面。理解并熟练掌握这些知识点,能够帮助开发者在Struts2项目中有效地实现文件上传功能。

    struts2文件上传源码和步骤

    在 Struts2 中,文件上传功能是通过特定的拦截器(`FileUploadInterceptor`)来实现的。以下是对标题和描述中所述知识点的详细解释: 1. **文件上传原理**: 文件上传的本质是客户端浏览器将本地文件以二进制流的...

    Struts2文件上传与下载

    文件上传在Struts2中主要依赖于`org.apache.struts2.interceptor.FileUploadInterceptor`拦截器,以及`CommonsFileUpload`库,这是一个Apache提供的用于处理HTTP多部分请求的组件。以下是实现文件上传的关键步骤: ...

Global site tag (gtag.js) - Google Analytics