zoukankan      html  css  js  c++  java
  • 前端实现input[type='file']上传图片预览效果

    众所周知JavaScript在设计上处于安全角度考虑,是不允许读写本地文件的(原因请自行百度);

    但是在实际项目应用中,经常会使用到上传图片,并且可以让用户直接预览图片。对于此种做法有两种方法可以实现:一是前后台交互,后台将图片地址返回前端;

    二是,我今天写的内容,使用FileReader对象——允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容;此种方法可以优化图片加载速度,减少方法一占用带宽的问题;

    但是,此种方法兼容性存在问题,主要是IE浏览器(ie10以上没问题),本文不在讨论兼容性问题,代码如下:

    <!DOCTYPE html>
    <html>
    
        <head>
            <meta charset="UTF-8">
            <title></title>
            <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
            <style type="text/css">
                #preview {
                    display: inline-block;
                    width: 2.56rem;
                    height: 2.56rem;
                    position: relative;
                    background-image: url(img/iconfont-tianjia.png);
                    background-repeat: no-repeat;
                    background-size: cover;
                }
                
                #file {
                    width: 100%;
                    height: 100%;
                    opacity: 0;
                    position: absolute;
                    left: 0;
                    top: 0;
                    cursor: pointer;
                    z-index: 5;
                }
            </style>
        </head>
        <body>
            <div id="preview">
                <input type="file" accept="image/*" id="file" value="" />
            </div>
            <script type="text/javascript">
                var preview = document.querySelector('#preview');
                var eleFile = document.querySelector('#file');
                eleFile.addEventListener('change', function() {
                    var file = this.files[0];                
                    // 确认选择的文件是图片                
                    if(file.type.indexOf("image") == 0) {
                        var reader = new FileReader();
                        reader.readAsDataURL(file);                    
                        reader.onload = function(e) {
                            // 图片base64化
                            var newUrl = this.result;
                            preview.style.backgroundImage = 'url(' + newUrl + ')';
                        };
                    }
                });
            </script>
        </body>
    
    </html>

    直接复用测试即可,FileReader对象是通过将图片url转换成base64格式,然后显示出来。

  • 相关阅读:
    Count and Say leetcode
    Find Minimum in Rotated Sorted Array II leetcode
    Find Minimum in Rotated Sorted Array leetcode
    Search in Rotated Sorted Array II leetcode
    search in rotated sorted array leetcode
    Substring with Concatenation of All Words
    Subsets 子集系列问题 leetcode
    Sudoku Solver Backtracking
    Valid Sudoku leetcode
    《如何求解问题》-现代启发式方法
  • 原文地址:https://www.cnblogs.com/web-wjg/p/7799173.html
Copyright © 2011-2022 走看看