前台jsp页:
<script language="javascript" type="text/javascript">
function createElement(tagName, type, name)
{
var element = null;
try
{
element = document.createElement('<' + tagName + ' name="'+name+'" size=30 onchange="add();"/>');
element.type = type;
element.value = value;
}
catch (e)
{
}
if ( ! element)
{
element = document.createElement(tagName);
element.setAttribute("type", type);
}
return element;
}
// 动态创建表单控件的方法
var i = 1;
function add()
{
// 动态创建控件名称
var name = "attachment" + i;
var input1 = createElement("input", "file", name);
var br = document.createElement("<br />");
var files = document.getElementById("files");
files.appendChild(br);
files.appendChild(input1);
i ++ ;
}
</script>
<!--
************************
附件
************************
-->
<div id="files">
<input type="file" size="30" name="attachment0" onchange="add();" alt="选择后即可动态添加文件域"/>
<input type="button" onclick="add();" value="多个附件" alt="手动添加文件域"/>
<font color=green><a alt="不支持的文件类型将会被直接过滤掉">支持的文件类型(.rar,.zip,.txt,.sql,.ini,.jpg,.bmp,.gif)</a></font>
</div>
Action中的关键代码:
FormFile[] formFile = null;
// 得到所有的文件请求元素
Hashtable files = bbsForm.getMultipartRequestHandler()
.getFileElements();
if (files != null && files.size() > 0)
{
// 初始化FormFile
formFile = new FormFile[files.size()];
// 得到files的keys
Enumeration enums = files.keys();
String fileKey = null;
int i = 0;
// 遍历枚举
while (enums.hasMoreElements())
{
// 取得key
fileKey = (String) (enums.nextElement());
System.out.println("key:" + fileKey);
// 初始化每一个FormFile(接口)
formFile[i] = (FormFile) files.get(fileKey);
// 分别上传
upload(formFile[i], request, bbs);
i++;
}
}
upload方法:
/**
* 文件上传的方法
*
* @param file
* @param request
* @param bbs
*/
public void upload(FormFile file, HttpServletRequest request, Bbs bbs)
{
//只有选择了文件时才上传
if ("".equals(file.getFileName()) || null == file.getFileName())
{
return ;
}
// 得到当前网站的绝对路径
String path = this.getServlet().getServletContext().getRealPath("/");
FileOutputStream fileOutput;
try
{
// 文件操作
fileOutput = new FileOutputStream(path + "main/upload/"
+ file.getFileName());
fileOutput.write(file.getFileData());
fileOutput.flush();
fileOutput.close();
log.info("BbsAction:附件上传成功");
}
catch (FileNotFoundException e)
{
log.info("BbsAction:找不到文件");
}
catch (IOException e)
{
log.info("BbsAction:文件IO异常");
}
// 数据库操作
Fileupload fileupload = new Fileupload();
String basePath = request.getScheme() + "://" + request.getServerName()
+ ":" + request.getServerPort() + request.getContextPath()
+ "/";
fileupload.setFilename(basePath + "/main/upload/" + file.getFileName());
// 得到文件的扩展名
int point = file.getFileName().lastIndexOf(".");
String ext = file.getFileName().substring(point + 1);
//扩展名处理
if ("jpg".equals(ext.toLowerCase()) || "bmp".equals(ext.toLowerCase())
|| "gif".equals(ext.toLowerCase()))
{
ext = "img";
}
if ("rar".equals(ext.toLowerCase()) || "zip".equals(ext.toLowerCase())
|| "jar".equals(ext.toLowerCase()))
{
ext = "rar";
}
if("txt".equals(ext.toLowerCase()) || "sql".equals(ext.toLowerCase()) || "ini".equals(ext.toLowerCase()))
{
ext = "txt";
}
fileupload.setFileext(ext);
fileupload.setFilesize(file.getFileSize());
fileupload.setUptime(new Date());
fileupload.setDowncount(0);
fileupload.setUpuser(((User) request.getSession().getAttribute("user"))
.getUserName());
fileupload.setFlag((short) 0);
fileupload.setAnnounceId(bbs.getAnnounceId());
fileupload.setName(file.getFileName());
fileuploadManager.save(fileupload);
log.info("BbsAction:附件信息已经成功保存到数据库");
}
这样就实现的动态的多文件上传.关键还是
Hashtable files = bbsForm.getMultipartRequestHandler()
.getFileElements();
的处理.
其中的数据库操作部分不是必须的.
原文:http://www.blogjava.net/supercrsky/articles/178722.html
分享到:
相关推荐
struts1.2实现动态多文件上传,可实现代码全奉献!
我觉得struts1.2是一个比较稳定的框架,就连网上有名的教授都推荐用struts1.2,所以没有驱动的友友赶紧下载吧!
struts1.2实现图片上传,先存放在服务器tomcat webappt里面。。。。
struts1.2 简单文件上传例子(用eclipse3.4打开运行即可)
struts1.2下实现文件上传进度条
Struts1.2 实现的多文件上传下载。。。
struts1.2 jar包 struts1.2 jar包 struts1.2 jar包 struts1.2 jar包 struts1.2 jar包
struts1.2实现分页,希望能帮助大家
struts1.2源码.rar 核心源码 struts-1.2.4-lib Struts1.2API chm格式
struts 1.2驱动包struts 1.2驱动包
这是一个struts 1.2 + spring 2.5 + hibernate 3.2框架demo, 运行环境为eclipse 3.2 + tomcat 5.5 + oracle 11g
struts1.2-2.0学习总结
struts1.2标签实例超经典,方便大家学习,对初学者有很好帮助
STRUTS1.2中文文档.rar,里边包含很多的STRUTS1.2相关文档,认真的看看,你会有收获的
采用Struts1.2实现简单的一个文件上传操作
Struts1.2 formfile实现批量上传
如题,本项目是一个简单的解决关于Struts1.2上传下载问题的Demo。 希望对需要的你有所帮助。
struts 1.2 标签使用说明,简单介绍了struts1.2的标签使用
struts1.2项目指导struts spring hibernate
知识共享-struts1.2配置文件详解(雷惊风).