BS中利用JS控制页面显示本地图片,自己封装的控件。

最近做一个系统时,在人员信息采集的时候。遇到将人员照片采集上。想试下选择本地照片然后可以再网页上显示。在网上搜索了诸多材料,然后根据前辈们的总结。封装了一个控件。

下面说一下控件页面。我想点击一下button按钮。然后即可使用fileupload选取照片,然后根据此路径显示本地图片。下面直接粘贴代码,直接将此代码复制到新建的用户控件就可以使用。

页面HTML代码:

<table align="left" width="100%" height="100%" border="0">
    <tr>
        <td id="WebPic" runat="server">
            <asp:Image ID="imgShow" runat="server" ImageUrl="#" Height="98px" Width="70px"></asp:Image>
        </td>
        <td id="LocalPic" runat="server">
            <div id="imgsrc">
            </div>
        </td>
    </tr>
    <tr>
        <td colspan="2">
            <input id="btnImg" style="width: 136px; height: 24px" type="button" value="选择照片"
                name="btnImg" runat="server" onmouseover="movebtnFile(this)" />
            <input id="btnFile" type="file" name="btnFile" runat="server" onchange="CheckImage(this);"
                style="filter: alpha(opacity=0); width: 30px; position: absolute" />
        </td>
    </tr>
</table>
页面上的JS代码:
<script language="jscript" type="text/jscript">
    var ImageUrl = null;
    function CheckImage(e) {
        var prefix = e.id.substring(0, e.id.indexOf("_btnFile"));
        if (ImageUrl == null) {
            ImageUrl = document.all(prefix + "_imgShow").src;
        }
        if (document.all(prefix + "_btnFile").value.length > 0) {
            document.getElementById(prefix + "_WebPic").style.display = "none";
            document.getElementById(prefix + "_LocalPic").style.display = "block";
            PreviewImg(prefix + "_btnFile")
        }
    }
    function SelectImage(e) {
        document.all(prefix + "_btnFile").click();
        if (document.all(prefix + "_btnFile").value.length == 0)
            return;
        document.all(prefix + "_imgShow").src = document.all(prefix + "_btnFile").value;
    }
    function movebtnFile(e) {

        var prefix = e.id.substring(0, e.id.indexOf("_btnImg"));

        var btn = document.all(prefix + "_btnFile");


        btn.style.offsetTop = event.srcElement.offsetTop;
        var x = event.x - btn.offsetWidth / 2;
        if (x < event.srcElement.offsetLeft) {
            x = event.srcElement.offsetLeft;
        }
        /*
        if(x>event.srcElement.offsetLeft+event.srcElement.offsetWidth-btn.offsetWidth)
        {
        x=event.srcElement.offsetLeft+event.srcElement.offsetWidth-btn.offsetWidth
        }
        */
        btn.style.posLeft = x;
    }


    function getPath(obj) {
        if (obj) {
            if (window.navigator.userAgent.indexOf("MSIE") >= 1)
            { obj.select(); return document.selection.createRange().text; }
            else if (window.navigator.userAgent.indexOf("Firefox") >= 1) {
                if (obj.files)
                { return obj.files.item(0).getAsDataURL(); }
                return obj.value;
            } return obj.value;
        }
    }
    function PreviewImg(imgFile) {

        //新的预览代码,支持 IE6、IE7。
        var upFile = document.getElementById(imgFile);
        var imgsrc = document.getElementById("imgsrc");


        imgsrc.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod = scale)";
        imgsrc.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = getPath(upFile);

        imgsrc.style.width = "70px";
        imgsrc.style.height = "98px";

    }
</script>

封装的控件,就可以通过button选择照片。然后显示本地图片。

 

posted on 2012-01-20 09:01  清风拂过  阅读(850)  评论(0编辑  收藏  举报