获取input file里上传的文件 => 实现预览效果

代码中已有注释 一个是转blob格式的图片 一个是转base64格式的图片
githubDemo => https://github.com/LanHai1/file-Preview-picture

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <label for="file">
        <img src="sc.jpg" alt="">
    </label>
    <input type="file" name="" id="file" style="display: none">
    <!-- 渲染图片img -->
    <label for="file">
        <img src="2.jpg" id="img" alt="">
    </label>
</body>

</html>
  <!-- 图片为blob编码格式 -->
    <script>
        window.onload = function() {
            // 获取input:file标签
            let file = document.querySelector("input[type=file]");
            // 注册改变事件
            file.onchange = () => {
                // 获取里面上传的内容 -> 返回的是一个伪数组
                let fileData = file.files[0];
                // window.URL 有兼容问题
                // 兼容代码
                const windowURL = window.URL || window.webkitURL;
                // window.URL.createObjectURL 会根据传入的参数创建一个指向该参数对象的URL
                let imgSrc = windowURL.createObjectURL(fileData);
                // 设置imgsrc
                document.querySelector("#img").setAttribute("src", imgSrc)
            };
        }
    </script>
    <!-- 图片为base64编码格式 -->
    <script>
        let file = document.querySelector("input[type=file]");
        file.onchange = () => {
            //获取input file的files文件数组;
            var fileData = file.files[0];
            //创建用来读取此文件的对象
            var reader = new FileReader();
            //使用该对象读取file文件
            reader.readAsDataURL(fileData);
            //读取文件成功后执行的方法函数
            reader.onload = function(e) {
                //读取成功后返回的一个参数e,整个的一个进度事件
                console.log(e);
                //选择所要显示图片的img,要赋值给img的src就是e中target下result里面
                //的base64编码格式的地址
                document.querySelector("#img").setAttribute("src", e.target.result)
            }
        }
    </script>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容