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 >
 支持的文件类型(.rar,.zip,.txt,.sql,.ini,.jpg,.bmp,.gif)

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实现动态多文件(不定个数)上传
文章分享:http://www.shufengxianlan.com/qtweb/news43/467093.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

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