Struts1.2怎么实现动态多文件不定个数上传

这篇文章主要讲解了“Struts1.2怎么实现动态多文件不定个数上传”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Struts1.2怎么实现动态多文件不定个数上传”吧!

创新互联建站-成都网站建设公司,专注成都网站制作、做网站、网站营销推广,域名与空间,虚拟空间,网站托管、服务器托管有关企业网站制作方案、改版、费用等问题,请联系创新互联建站

Struts1.2依然是应用很广的框架,实现动态多文件(不定个数)上传请先看下面的代码

关键代码

< 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("
");
var files = document.getElementById("files");
files.appendChild(br);
files.appendChild(input1);
i ++ ;
}
< /SCRIPT>

< DIV id=files>
< INPUT onchange=add(); alt=选择后即可动态添加文件域 size=30 type=file name=attachment0>
< INPUT onclick=add(); value=多个附件 alt=手动添加文件域 type=button >

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();

的处理.

感谢各位的阅读,以上就是“Struts1.2怎么实现动态多文件不定个数上传”的内容了,经过本文的学习后,相信大家对Struts1.2怎么实现动态多文件不定个数上传这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!

网站名称:Struts1.2怎么实现动态多文件不定个数上传
文章出自:https://www.cdcxhl.com/article8/gsheop.html

成都网站建设公司_创新互联,为您提供定制网站静态网站自适应网站手机网站建设虚拟主机网站内链

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

绵阳服务器托管