知识大全 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相关参考
在Struts2中实现文件上传 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Struts是通过
J2EE综合:Struts上传多个文件的例子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs
分享:用Struts上传多个文件的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 最近在做S
文件上传几乎是每个项目实现的一个必须的模块 上传就是将信息从个人计算机(本地计算机)传递到中央计算机(远程计算机)系统上让网络上的人都能看到将制作好的网页文字图片等发布到互联网上去以
package ninetownszhangcstrutsaction; public class Constant private Constant() public static
Struts1.x系列教程(8):上传单个文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在
ASP.NET带进度条多文件上传 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! )解压jquer
想必大家都已经厌烦了机械式的职员工作,日复一日的上班打卡、下班回家,每天的日子很是单调、乏味。过腻了这种生活之后,想必大家都有开一家属于自己的店铺的想法,无论是餐饮店、服装店,或是理发店、按摩店,开店
面试中考官会通过各种看似与工作无关的话题与你交谈,从而观察你、审查你、评判你。所以你必须学会快速观察考官,了解其说话方式、思维方式,以便应对各类问题。1.「谦虚」的考官这种考官一见到应征者,便上前边握
“请问,你认为自己最大的弱点是什么?”对面的人事姐姐瞇起眼,掷出最具杀伤力的一招。到这儿之前,我曾经拜读过许多“面经”,经典的回答莫过于“我的最大弱点是太勤奋太拚命了,以至于常常忘掉了休息……”面试时