• 图片上传(二)


    这种方法需要提交form表单,再跳转页面(没有第一种方法好):

    一、JSP代码:

    <div class="tphoto" name="head_img" id="head_img">
        <input type="file" name="file" onchange="previewImage(this)" />
        <div id="preview">
            <img id="imghead" border=0 src='${ctx}/static/images/elearning/photo_teacher.png'>
        </div>
    </div>


    二、JS代码:

    //图片上传
        function previewImage(file) {
              var MAXWIDTH  = 100;
              var MAXHEIGHT = 100;
              var div = document.getElementById('preview');
              if (file.files && file.files[0]){
                  div.innerHTML = '<img id=imghead>';
                  var img = document.getElementById('imghead');
                  img.onload = function(){
                        var rect = clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight);
                        img.width = rect.width;
                        img.height = rect.height;
                        img.style.marginLeft = rect.left+'px';
                        img.style.marginTop = rect.top+'px';
                  }
                  var reader = new FileReader();
                  reader.onload = function(evt){img.src = evt.target.result;}
                  reader.readAsDataURL(file.files[0]);
              } else {
                var sFilter='filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src="';
                file.select();
                var src = document.selection.createRange().text;
                div.innerHTML = '<img id=imghead>';
                var img = document.getElementById('imghead');
                img.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = src;
                var rect = clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight);
                status =('rect:'+rect.top+','+rect.left+','+rect.width+','+rect.height);
                div.innerHTML = "<div id=divhead style='"+rect.width+"px;height:"+rect.height+"px;margin-top:"+rect.top+"px;margin-left:"+rect.left+"px;"+sFilter+src+""'></div>";
              }
        }
        
        function clacImgZoomParam( maxWidth, maxHeight, width, height ){
            var param = {top:0, left:0, width, height:height};
            if( width>maxWidth || height>maxHeight ) {
                rateWidth = width / maxWidth;
                rateHeight = height / maxHeight;
                
                if( rateWidth > rateHeight ) {
                    param.width =  maxWidth;
                    param.height = Math.round(height / rateWidth);
                } else {
                    param.width = Math.round(width / rateHeight);
                    param.height = maxHeight;
                }
            }
            
            param.left = Math.round((maxWidth - param.width) / 2);
            param.top = Math.round((maxHeight - param.height) / 2);
            
            return param;
        }


    三、后台Java代码:

    /**
         * 
         * @Title: insert 
         * @Description: 新增 
         * @param @param params
         * @param @param request
         * @param @return
         * @return MessageResp
         * @throws
         */
        @RequestMapping("/insert")
        public ModelAndView insert(Model model, TrainerQueryParam params, HttpServletRequest request, MultipartFile file) {
            ModelAndView view = new ModelAndView();
            User u = SessionUtils.getUser(request.getSession());
    
            /**
             * 把前端传过来的参数对象中要更新的属性转到model实体类相应的字段属性中, 可以通过通用的转化实现
             * */
            Trainer trainer = new Trainer();
            
            try {
                BeanUtils.copyProperties(trainer, params);//前面的是目标,后面的是源对象
            } catch (IllegalAccessException e) {
                throw new AjaxBusinessException("新增出错!");
            } catch (InvocationTargetException e) {
                throw new AjaxBusinessException("新增出错!");
            }
            
            trainer.setId(UUIDUtil.getUUID()); //ID
            trainer.setCorpId(SessionUtils.getCorpId(request.getSession()));
            
            try {
               
                if(!file.isEmpty()){
                    //获得工程下面upload资源包路径,当然这个包是已经存在的了
                    String path = request.getSession().getServletContext().getRealPath("upload/trainer_picture");
                    
                    //上传的图片的名称
                    String fileName = file.getOriginalFilename();
                    String newfileName = UUIDUtil.generateGUID() + fileName.substring(fileName.lastIndexOf(".")).toLowerCase();
                    
                    //下面是upload路径盘符的转化        
                    StringBuffer importPath = new StringBuffer();
                    String temp[] = path.split("\\");
                    
                    for (int i = 0; i < temp.length; i++) {
                        importPath.append(temp[i]);
                        importPath.append("/");
                    }
                    
                    importPath.append(newfileName);
                    //看是否存在upload包,没有则会新建一个upload包,作为资源上传的路径
                    File targetFile = new File(path, newfileName);
                    if (!targetFile.exists()) {
                        targetFile.mkdirs();
                    }
                    
                    //文件上传
                    file.transferTo(targetFile);
                    
                    trainer.setHeadImg(newfileName);
                }
                
                if (trainerService.insert(trainer) == 1) {
                    resp.setResult("true");
                    resp.setResultDesc("新增成功!");
                }
            } catch (Exception e) {
                resp.setResult("false");
                resp.setResultDesc("新增出错!");
            }
            
            //model.addAttribute("trainerResp", trainerResp);
          //model.addAttribute("srList", srList);
      
         view.setViewName("views/xxx/manage/xxxinfo");
      
         return view;
    }
  • 相关阅读:
    [原创]测试计划与测试方案区别
    [原创]什么是构建验证测试(BVT)
    [原创]什么是测试驱动开发?
    [原创]用TestDirector的测试管理的流程
    [原创]测试用例设计之"正面测试与和负面测试"
    [原创]测试用例设计之“因果图”法
    [原创]测试用例设计之“状态迁移图”法
    [转贴]测试工具自动化的最佳实践
    [原创]软件测试管理之“测试角色和职能”概述
    软件测试试题
  • 原文地址:https://www.cnblogs.com/mingyue1818/p/4326526.html
Copyright © 2020-2023  润新知