• 图片上传


    https://www.jb51.net/article/145157.htm

    思路:完成这个功能,首先需要美化上传图片的按钮,然后添加一个<img/>标签,在图片上传之后,用新图片的src替换原来<img/>标签中的src。

    如下图所示,是原始的按钮样式:

    美化步骤:

    (1)将上传图片标签采用绝对定位,使之位于一个图片,按钮,div等标签上。或者给图片,按钮或div设置绝对定位,总之,是要让上传文件按钮和用户指定的按钮重合。

    (2)给上传图片标签设置大大小,使之和与它重叠的图片,按钮,div等标签大小一致。

    (3)我将此标签设置为透明:opacity:0;

    如下图所示,是两种美化后的上传图片按钮:

    接下来是完成图片预览的功能,步骤:

    (1)首先需要定义好一个<img>,src为空或者是默认图片,

    (2)如果src为空,就给定义好的img设置为透明:opacity:0;如果不是透明的话,会显示一个图片的标志,不美观。

    (3)点击上传图片后,获取上传的图片的src,将它赋值给事先定义好的<img>,再给<img>设置opacity:1;

    接下来为具体的代码示例。

     示例一:将图片上传到点击的位置。(此示例中使用了AUI框架,但不影响此功能。)

    HTML代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <div id="imgPreview">
     <div id="prompt3">
     <span id="imgSpan">
     点击上传
     <br />
     <i class="aui-iconfont aui-icon-plus"></i>
     <!--AUI框架中的图标-->
     </span>
     <input type="file" id="file" class="filepath" onchange="changepic(this)" accept="image/jpg,image/jpeg,image/png,image/PNG">
     <!--当vaule值改变时执行changepic函数,规定上传的文件只能是图片-->
     </div>
     <img src="#" id="img3" />
    </div>

     CSS代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #imgPreview {
     width: 40%;
     height: 180px;
     margin: 10px auto 0px auto;
     border: 1px solid black;
     text-align: center;
    }
    #prompt3 {
     width: 100%;
     height: 180px;
     text-align: center;
     position: relative;
    }
    #imgSpan {
     position: absolute;
     top: 60px;
     left: 40px;
    }
    .filepath {
     width: 100%;
     height: 100%;
     opacity: 0;
    }
    #img3 {
     height: 100%;
     width: 100%;
     display: none;
    }

    JS代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function changepic() {
     $("#prompt3").css("display", "none");
     var reads = new FileReader();
     f = document.getElementById('file').files[0];
     reads.readAsDataURL(f);
     reads.onload = function(e) {
     document.getElementById('img3').src = this.result;
     $("#img3").css("display", "block");
     };
    }

    效果如下图所示:

    示例二:将图片上传到点击按钮旁边的位置。(此示例中使用了阿里巴巴矢量图标库,但不影响此功能。)

    HTML代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <div class="aui-col-xs-3" id="img">
     <svg class="icon bigIcon" aria-hidden="true">
     <use xlink:href="#icon-msnui-add"></use>
     </svg>
     <!--阿里巴巴矢量图标,就是最后效果图中的“+”图标-->
     <div class="aui-grid-label">添加图片</div>
     <div id="upImg">
     <input type="file" name="file" id="chooseImage" />
     </div>
     <div id="imgPreview">
     <img src="#" id="cropedBigImg" />
     </div>
    </div>

     CSS代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #img {
     float: left;
     margin-left: 20px;
     width: 150px;
     height: 60px;
     }
    #upImg {
     position: absolute;
     top: 0px;
     left: 0px;
    }
    #upImg input {
     width: 70px;
     height: 60px;
     opacity: 0;
    }
    #imgPreview {
     width: 80px;
     height: 60px;
     position: absolute;
     left: 70px;
     top: 0px;
    }
    #cropedBigImg{
     width: 100%;
     height: 100%;
     display: none;
    }

    JS代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $('#chooseImage').on('change', function() {//当chooseImage的值改变时,执行此函数
     var filePath = $(this).val(), //获取到input的value,里面是文件的路径
     fileFormat = filePath.substring(filePath.lastIndexOf(".")).toLowerCase(),
     src = window.URL.createObjectURL(this.files[0]); //转成可以在本地预览的格式
      
     // 检查是否是图片
     if(!fileFormat.match(/.png|.jpg|.jpeg/)) {
     error_prompt_alert('上传错误,文件格式必须为:png/jpg/jpeg');
     return;
     }else{
     $('#cropedBigImg').css('display','block');
     $('#cropedBigImg').attr('src', src);
     }
    });
  • 相关阅读:
    Java设计模式—单例模式
    Java集合框架
    Java进程和线程
    Java IO
    Java异常类
    Java面向对象—抽象类和接口
    Java面向对象—多态
    Java面向对象—继承
    Java面向对象
    Java基础语法
  • 原文地址:https://www.cnblogs.com/wsj1/p/14374125.html
Copyright © 2020-2023  润新知