• java IO流读取图片供前台显示


             国网内网OA项目终于告一段落,回顾项目开发过程中深刻体会,莫过于国网可研,需求规格说明书,业务需求说明书,概要设计说明书都过了评审,但客户还是时不时提出新需求,这不最近又提出一个护签管理(顾名思义就是护照管理和签证管理的统称),其中有一个需要上传图片问题,如果单纯的jsp可能问题不大,但国网项目前端框架MX-Frameworkment(一种容器类框架),就有一点不好直接如网上展示了。但万变不离其宗,图片上传包括两部分,一部分是图片上传到服务器的某一个位置(或者上传的数据库,但由于图片上传量不大,用户最大并发数才50所以就直接上传到服务器的某个目录下),另一部分是当用户点击编辑时,显示你所上传的图片

    图片点击上传

    /**
     *图片在线预览方法 
     */
    function setImagePreview() {
        var docObj = document.getElementById("importFile");
        var imgObjPreview = document.getElementById("preview");
        if (docObj.files && docObj.files[0]) { //火狐下,直接设img属性                      
            imgObjPreview.style.display = 'block';
            imgObjPreview.style.width = '120px';
            imgObjPreview.style.height = '112px';
            //imgObjPreview.src = docObj.files[0].getAsDataURL();      //火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式      
            imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]);
        } else {
            //IE下,使用滤镜  
            docObj.select();
            var imgSrc = document.selection.createRange().text;
            //var imgSrc =  document.getElementById("importFile").value;
            var localImagId = document.getElementById("localImag"); //必须设置初始大小                     
            localImagId.style.width = "120px";
            localImagId.style.height = "112px"; //图片异常的捕捉,防止用户修改后缀来伪造图片
            localImagId.style.position = "absolute";
            localImagId.style.left = "381px";
            localImagId.style.top = "20px";
            try {
                localImagId.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
                localImagId.filters
                        .item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
            } catch (e) {
                alert("您上传的图片格式不正确,请重新选择!");
                return false;
            }
            imgObjPreview.style.display = 'none';
            document.selection.empty();
        }
        return true;
    }

    图片编辑预览

    图片编辑预览一般用IO流读取图片供前台显示

    后台代码:

    /** 
         * IO流读取图片 by:long 
         * @return 
         */  
        @RequestMapping(value = "/IoReadImage/{imgName}", method = RequestMethod.GET)  
        public String IoReadImage(@PathVariable String imgName,HttpServletRequest request,HttpServletResponse response) throws IOException {  
            ServletOutputStream out = null;  
            FileInputStream ips = null;  
            try {  
                //获取图片存放路径  
                String imgPath = Constans.FOLDER_IMAGE + imgName;  
                ips = new FileInputStream(new File(imgPath));  
                response.setContentType("multipart/form-data");  
                out = response.getOutputStream();  
                //读取文件流  
                int len = 0;  
                byte[] buffer = new byte[1024 * 10];  
                while ((len = ips.read(buffer)) != -1){  
                    out.write(buffer,0,len);  
                }  
                out.flush();  
            }catch (Exception e){  
                e.printStackTrace();  
            }finally {  
                out.close();  
                ips.close();  
            }  
            return null;  
        }  

    前台代码 - 方式一:

    <span style="white-space:pre">  </span><div style="float: left;">  
              <#--${model.userDatil.photo} 为数据库存放的文件名称-->  
              <img src="${ctx}/userInfo/IoReadImage/${model.userDatil.photo}" id="npcImg" width="125" height="148"/>  
              <input type="hidden" id="photo" name="photo"/>  
            </div>  

    js代码 - 方式二:

    var npcName = $('#npcImg').data('val');  
    var img = document.getElementById("npcImg");  
    img.src = '/userInfo/IoReadImage/'+npcName;  

    jQuery代码 - 方式三:

    $('#npcImg').attr('src','/userInfo/IoReadImage/'+npcName);  
  • 相关阅读:
    性能测试入门
    PHP基础
    SpringCloud五大核心组件
    selenium(八)持续集成
    四种隔离级别和脏读、幻读、不可重复读
    RocketMQ【目录】
    ModelAgnostic Counterfactual Reasoning for Eliminating Popularity Bias in Recommender System
    How Powerful is Graph Convolution for Recommendation?
    ScoreBased Generative Modeling through Stochastic Differential Equations
    Graph Embedding for Recommendation against Attribute Inference Attacks
  • 原文地址:https://www.cnblogs.com/hujianblogs/p/8532618.html
Copyright © 2020-2023  润新知