知识大全 Struts轻松搞定多文件上传

Posted

篇首语:一天不练手脚慢,两天不练丢一半,三天不练门外汉,四天不练瞪眼看。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Struts轻松搞定多文件上传相关的知识,希望对你有一定的参考价值。

Struts轻松搞定多文件上传  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在前面的《Apache Commons FileUpload实现多文件上传》文章中介绍了使用第三方组件ApacheCommons FileUpload来实现多文件的上传 对比今天用struts实现的多文件上传 总觉得还是struts用起来更加顺手 也更加简洁方便 不忍自己独享 所以拿出来跟大家一块分享一下 如果你读过前面提到的那篇文章 相信再理解本文将会更加容易 另外提供源码以方便大家学习 由于本文属于一片纯技术文章 废话就不多说了 下面看一下struts是如何实现多文件上传的吧

   首先来看前台 在前台页面中通过js实现上传控件的添加和删除 描述的详细一些就是点一下 增加一行 按钮就会增加一个上传控件 同样点击该控件后边的 删除 则会将该上传控件去除 目的在于用js实现添加任意数目的文件的功能

  []

  <span ><%@ page language= java pageEncoding= GB %>

  <%@ taglib uri= /tags prefix= %>

  <!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN >

  <>

  <head>

  <title>multiUploadDemo</title>

  <script type= text/javascript src= js/myjs js >

  </script>

  </head>

  <body bgcolor= #ffffff >

  <div id= status ></div>

  <form method= post action= upload do enctype= multipart/form data >

  <table id= tb ></table>

  <input type= button name= AddOnLine value= 增加一行 onclick= additem( tb ) />

  <input type= submit name= btnUpload value= 上传 onclick= upload() />

  </form>

  </body>

  </>

  </span>

  在前台页面中引用的js文件中的代码如下

  [javascript]

  <span > var num = ;

  function upload()

  document getElementById( status ) innerHTML = 文件上传中 ;

  

  function additem(id)

  

  var row cell str;

  row = eval( document all[ + +id+ + ] ) insertRow();

  if(row != null )

  

  cell = row insertCell();

  str= <input type= + + file + + name=uploadFile[ + num + ] file><input type= + + button + + value= + + 删除 + + onclick= deleteitem(this + + tb + + ); >

  cell innerHTML=str;

  

  num++;

  

  function deleteitem(obj id)

  

  var rowNum curRow;

  curRow = obj parentNode parentNode;

  rowNum = eval( document all +id) rows length ;

  eval( document all[ + +id+ + ] ) deleteRow(curRow rowIndex);

  

  function callback(msg)

  

  document getElementById( status ) innerHTML = 文件上传完成 <br> + msg;

  </span>

   前台页面在实现了动态添加上传控件的功能后 真正用来上传文件的后台代码就要隆重登场了 后台代码中新建三个类 他们分别为UploadActionForm java UploadFile java以及UploadTestAction java

  UploadActionForm java类代码如下

  [java]

  <span >package myupload;

  import java util ArrayList;

  import java util List;

  import apache struts action ActionForm;

  import apache struts upload FormFile;

  public class UploadActionForm extends ActionForm

  private List myFiles;

  public UploadActionForm()

  myFiles = new ArrayList();

  

  public List getMyFiles()

  return myFiles;

  

  // 注意这个方法的定义 不加中间的循环是会出错的

  public UploadFile getUploadFile(int index)

  int size = myFiles size();

  if (index > size )

  for (int i = ; i < index size + ; i++)

  myFiles add(new UploadFile());

  

  

  return (UploadFile) myFiles get(index);

  

  public void setMyFiles(List myFiles)

  this myFiles = myFiles;

  

  

  </span>

  UploadFile java类代码如下

  [java]

  <span >package myupload;

  import java io Serializable;

  import apache struts upload FormFile;

  public class UploadFile implements Serializable

  private FormFile file;

  public FormFile getFile()

  System out println( run  in  uploadFile getFile() );

  return file;

  

  public void setFile(FormFile file)

  this file = file;

  

  

  </span>

  UploadTestAction java类代码如下

  [java]

  <span >package myupload;

  import java io FileOutputStream;

  import java io IOException;

  import java io PrintWriter;

  import java util ArrayList;

  import javax servlet ServletException;

  import javax servlet HttpServletRequest;

  import javax servlet HttpServletResponse;

  import apache struts action Action;

  import apache struts action ActionForm;

  import apache struts action ActionForward;

  import apache struts action ActionMapping;

  import apache struts upload FormFile;

  import llections List;

  public class UploadTestAction extends Action

  public ActionForward execute(ActionMapping mapping ActionForm form

  HttpServletRequest request HttpServletResponse response)

  throws IOException ServletException

  UploadActionForm multiUploadForm = (UploadActionForm) form;

  ArrayList myFiles = (ArrayList)multiUploadForm getMyFiles();

  String fileStr = ;

  System out println(myFiles size());

  for (int i = ; i < myFiles size(); i++)

  UploadFile uploadFile = (UploadFile) myFiles get(i);

  FormFile file = uploadFile getFile();

  if (file == null)

  System out println( file  is  null );

   else

  FileOutputStream fos = new FileOutputStream( H:\\\\ + file getFileName());

  fos write(file getFileData());

  fos flush();

  fos close();

  

  

  return mapping findForward( success );

  

  </span>

  最后就是我们的struts config xml文件了

  []

  <span ><?xml version= encoding= ISO ?>

  <!DOCTYPE struts config PUBLIC

   //Apache Sofare Foundation//DTD Struts Configuration //EN

   /struts/dtds/struts config_ _ dtd >

  <struts config>

  <form beans>

  <form bean name= uploadForm type= myupload UploadActionForm />

  </form beans>

  <action mappings>

  <action path= /upload

  type= myupload UploadTestAction

  name= uploadForm

  scope= request

  >

  <forward name= success path= /upload_success jsp />

  </action>

  </action mappings>

  <controller maxFileSize= M />

  </struts config></span>

cha138/Article/program/Java/ky/201311/28178

相关参考

知识大全 在Struts 2中实现文件上传

在Struts2中实现文件上传  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Struts是通过

知识大全 Struts上传多个文件的例子

J2EE综合:Struts上传多个文件的例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 分享:用Struts上传多个文件的方法

分享:用Struts上传多个文件的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近在做S

知识大全 struts2文件上传的采用的三种方式解析

   文件上传几乎是每个项目实现的一个必须的模块  上传就是将信息从个人计算机(本地计算机)传递到中央计算机(远程计算机)系统上让网络上的人都能看到将制作好的网页文字图片等发布到互联网上去以

知识大全 struts实现多图片上传

  package ninetownszhangcstrutsaction;  public class Constant   private Constant()     public static

知识大全 上传单个文件

Struts1.x系列教程(8):上传单个文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在

知识大全 ASP.NET带进度条多文件上传

ASP.NET带进度条多文件上传  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  )解压jquer

知识大全 掌握这些要点轻松搞定开店起名

想必大家都已经厌烦了机械式的职员工作,日复一日的上班打卡、下班回家,每天的日子很是单调、乏味。过腻了这种生活之后,想必大家都有开一家属于自己的店铺的想法,无论是餐饮店、服装店,或是理发店、按摩店,开店

知识大全 轻松搞定8种难缠的面试官

面试中考官会通过各种看似与工作无关的话题与你交谈,从而观察你、审查你、评判你。所以你必须学会快速观察考官,了解其说话方式、思维方式,以便应对各类问题。1.「谦虚」的考官这种考官一见到应征者,便上前边握

知识大全 巧舌如簧轻松搞定面试官

“请问,你认为自己最大的弱点是什么?”对面的人事姐姐瞇起眼,掷出最具杀伤力的一招。到这儿之前,我曾经拜读过许多“面经”,经典的回答莫过于“我的最大弱点是太勤奋太拚命了,以至于常常忘掉了休息……”面试时