表单上传文件相关

1.js验证上传附件进行校验

        //在上提交表单之前对上传文件进行校验
        $(".button_add").click(function(){
            var files = $("input[name=xxx]");
// alert(files.length);
            var maxSize = 5*1024*1024;//设置文件上传的最大占用空间为5M
            var checkFile = true;
            $.each(files,function(index,file){
                if(""== file.value)
                {
                    alert("请上传合同附件!");
                    checkFile = false;
                    return;
                }
                //对上传文件的格式进行校验
                var fileType = file.value.substr(file.value.lastIndexOf(".")+1);
                if("doc" == fileType || "pdf" == fileType)
                {
                    var fileSize = getFileSize(file);   //获取文件大小
                    if(fileSize > maxSize)
                    {
                        alert(file.value+" 文件过大,单个文件最大不超过5M");
                        checkFile = false;
                        return;
                    }
                }else
                {
                    alert("文件格式有误,系统只允许上传doc或者pdf格式的附件!")
                    checkFile = false;
                    return;
                }

            });
            return checkFile;
        });

        //获得文件的大小(单位字节) dom为input[type=file]的节点对象 
        function getFileSize(dom) {   
        try {  
                return dom.files[0].size;  
            } catch (e) {  
            try {  
                    var img = new Image();  
                    img.dynsrc = dom.value;  
                    img.style.display='none';  
                    document.body.appendChild(img);  
                            setTimeout(function(){  
                                    document.body.removeChild(img);  
                            },1000);  
                    return img.fileSize;  
            } catch (e) {  
              return -1;  
            }  
            }  
        }  

2.后台对上传的附件进行处理

boolean isMultipart = ServletFileUpload.isMultipartContent(request);// 检查输入请求是否为multipart表单数据。
            if (isMultipart) {
                File f = null;
                f=new File(HETONG_DIR);
                if(!f.exists()){
                    f.mkdir();
                }
                FileItemFactory factory = new DiskFileItemFactory();// 为该请求创建一个DiskFileItemFactory对象,通过它来解析请求。执行解析后,所有的表单项(包括普通字段)都保存在一个List中。
                ServletFileUpload upload = new ServletFileUpload(factory);
                //upload.setSizeMax(5242800); //交给flash去验证,这里不限制大小了.
                List<FileItem> items = upload.parseRequest(request);
                Iterator<FileItem> itr = items.iterator();
                FileItem item = null;

                while (itr.hasNext()) {
                    item = itr.next();
                    // 检查当前项目是普通表单项目还是上传文件。
                    if(!item.isFormField() && item.getSize() > 0){
                        String fn = item.getName(); //文件名
                        //验证扩展名 此处可以对上传的文件名及格式做处理
                        if(fn.contains(".doc") || fn.contains(".pdf"))
                        {
                            try {
                                fileTempName = HETONG_DIR+File.separator+ fn;   //此处文件存储路径需要修改
                                //记录上传的文件和路径
                                wenJian+= "{\"filename\":\""+fn+"\",\"path\":\""+fileTempName+"\"},";
                                f = new File(fileTempName);
                                item.write(f);
                            }catch (Exception e) {
                                request.setAttribute("errorInfo", "保存文件失败!");
                                logger.error("保存上传的文件失败:"+e.getMessage());
                                return false;
                            }
                        }else {
                            request.setAttribute("errorInfo", "上传文件格式有误!!");
                            logger.error("上传文件格式有误!!");
                            return false;
                        }
                    }
                    //普通表单数据
                    else {
                        String name = item.getFieldName();
                        //对数据进行gbk编码 主要解决中文乱码问题
                        String value = new String(item.getString().getBytes("ISO8859-1"),"gbk");    
                        if(name.equals("mingChen"))
                            heTongMingChen = value;
                    }
                }
            }

3.下载附件

    @Override
    public boolean downloadWenJian(HttpServletRequest request,
            HttpServletResponse response) {
        ServletOutputStream out = null;
        try {
            out = response.getOutputStream();
            String filePath = request.getParameter("filepath");
            response.setCharacterEncoding("utf-8");
            response.setContentType("multipart/form-data"); 
            String fileName = new String(filePath.substring(filePath.lastIndexOf("\\")+1).getBytes(),"ISO8859-1");
            response.setHeader("Content-Disposition", "attachment;fileName="+fileName);
            FileInputStream in = new FileInputStream(new File(filePath));
            byte[] buffer = new byte[1024];
            while(in.read(buffer)!=-1)
            {
                out.write(buffer);
            }
            in.close();
            out.flush();
            out.close();
            return true;
        } catch (Exception e) {
            request.setAttribute("errorInfo", "下载失败!");
            logger.error(e);
        }finally{
            if(out != null)
            {
                out = null;
            }
        }
        return false;
    }

4.动态增删附件

//添加或移除文件
        $("button[name=add]").click(function(){
            $("#htwj").append("<div><input type='file' name='heTongFiles'/><a onclick='javascript:removeFile(this);' class='button_del'>删除</a></div>");
        });

        //填写基本信息时动态增加删除文件
        function removeFile(node){
            $("#htwj")[0].removeChild(node.parentNode);
        }

转载于:https://my.oschina.net/u/3702584/blog/1547191

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值