网站内容管理系统上传图片(图片预览窗口代码CSS代码代码那是想要一次上传多张)

优采云 发布时间: 2021-12-01 19:22

  网站内容管理系统上传图片(图片预览窗口代码CSS代码代码那是想要一次上传多张)

  最近在项目中遇到了一个问题。上传图片时需要在本地预览图片,但传统的''不支持。这里可以借用uploadPreview.js来实现

  /*这部分内容非本人原创,完全来自网络,感谢原创作者的分享*/

jQuery.fn.extend({

    uploadPreview: function (opts) {

        var _self = this,

            _this = $(this);

        opts = jQuery.extend({

            Img: "ImgPr",

            Width: 100,

            Height: 100,

            ImgType: ["gif", "jpeg", "jpg", "bmp", "png"],

            Callback: function () {}

        }, opts || {});

        _self.getObjectURL = function (file) {

            var url = null;

            if (window.createObjectURL != undefined) {

                url = window.createObjectURL(file)

            } else if (window.URL != undefined) {

                url = window.URL.createObjectURL(file)

            } else if (window.webkitURL != undefined) {

                url = window.webkitURL.createObjectURL(file)

            }

            return url

        };

        _this.change(function () {

            if (this.value) {

                if (!RegExp("\.(" + opts.ImgType.join("|") + ")$", "i").test(this.value.toLowerCase())) {

                    alert("选择文件错误,图片类型必须是" + opts.ImgType.join(",") + "中的一种");

                    this.value = "";

                    return false

                }

                if ($.browser.msie) {

                    try {

                        $("#" + opts.Img).attr('src', _self.getObjectURL(this.files[0]))

                    } catch (e) {

                        var src = "";

                        var obj = $("#" + opts.Img);

                        var div = obj.parent("div")[0];

                        _self.select();

                        if (top != self) {

                            window.parent.document.body.focus()

                        } else {

                            _self.blur()

                        }

                        src = document.selection.createRange().text;

                        document.selection.empty();

                        obj.hide();

                        obj.parent("div").css({

                            'filter': 'progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)',

                            'width': opts.Width + 'px',

                            'height': opts.Height + 'px'

                        });

                        div.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = src

                    }

                } else {

                    $("#" + opts.Img).attr('src', _self.getObjectURL(this.files[0]))

                }

                opts.Callback()

            }

        })

    }

});

  你可以把这部分js文件复制到你自己的文件夹目录下,放在jQuery文件后面引用。先看一小段html代码

  

 

  那么,你只需要在自己的js文件中将uoload事件绑定到对应的文件上传表单即可。

  $("#up").uploadPreview({ Img: "ImgPr", Width: 120, Height: 120 });

  看初步的页面效果:

  

  在我的项目中,我想要实现的效果是点击默认图片直接用新图片替换原图片,所以需要将预览图片的src赋值给原图片。同时,我也想把“选择文件”和后面的文件路径去掉,这些东西不漂亮,所以我采取了下面的方法

  

 

  

  Document

  

   #up{opacity: 0; position:absolute; top:40%; left:1%;}/*把这个文件上传表单设置全透明,藏在图片下面,不显示给用户*/

  

 

 

 

 

  

 

 

 

   

   

 </a>

 

 

 

 

  $(".up").uploadPreview({ Img: "ImgPr", Width: 120, Height: 120 });

  $('.ImgChange').click(function(e){

      e.preventDefault();//阻止a链接默认跳转

      if($('.up')){ //把图片的点击事件加到上

       $('.up').click();

       setInterval(function(){ //点击以后加载新的文件路径需要一段时间,所以设定1秒钟的延时,否则获取src属性时就是undefined

        $('.ImgChange img').attr('src',$('#ImgPr').attr('src'));

       },1000); //有效避免出现 fakepath这种情况

      };

     }

  );

 

 

  初步结果截图:

  

  ,

  现在我需要在图片中添加几个字来提示用户点击更改图片。图片更改后,这些文字将被隐藏,并且上面的图片预览窗口将被移除。

  HTML代码

  

  

  

点击更换图片

  </a> 

  CSS代码

  .up{opacity: 0; position:absolute; top:40%; left:20%;}

.ImgChange{display: inline-block; position:relative;}

.changeImg{position:absolute; top:0; bottom:0; left:0; right:0; margin:auto;

width:150px; height:30px; line-height:30px; text-align:center; 

color:#fff; background:#00B7EE; border-radius:5px; -webkit-border-radius:5px; -moz-border-radius:5px; -ms-border-radius:5px;}

  JS代码

  $('.ImgChange').click(function(e){

        e.preventDefault();

        if($('.up')){

           $('.up').click().uploadPreview({ Img: "ImgPr", Callback: remove() });

        }; /*注意看原始的JS文件,这里还有一个回掉函数可供使用*/

    }); 

function remove(){

$('.changeImg').hide();

}

  如果您想一次上传多张图片并支持图片预览,建议使用Web Uploader

  

  如果是图片,并且支持本地pre-UploaderbUploader

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线