<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        progress {
            width: 168px;
            height: 5px;
            color: #f00;
            background: #EFEFF4;
            border-radius: 0.1rem;
        }

        /* 表示总长度背景色 */
        progress::-webkit-progress-bar {
            background-color: #f2f2f2;
            border-radius: 0.2rem;
        }

        /* 表示已完成进度背景色 */
        progress::-webkit-progress-value {
            background: forestgreen;
            border-radius: 0.2rem;
        }
    </style>
</head>
<body>
<input type="file" id="myFile"/>
<div id="bar">
    上传进度:
    <progress id="pro" value="0"></progress>
</div>
<div>
    <img src="" alt="GG" id="myImg"/>
</div>

</body>
<script src="../js/jquery.js"></script>
<script>

    var myFile = document.getElementById("myFile");
    //绑定事件(ECMAScript6写法)
    myFile.addEventListener("change", () => {
        var file = myFile.files[0];
        //toDataURL(file);
        previewWithObjectURL(file);
    })

    //简单的图片预览建议使用第一种方式
    //URL方式(第一种方式)src = blob:http://localhost:8080/f720711f-57e2-428f-8a47-ec59e5dbbc10
    function previewWithObjectURL(file) {
        var url = URL.createObjectURL(file);
        var reader = new FileReader();
        reader.readAsDataURL(file);
        //请求完成后,显示图片
        reader.onloadend = function (event) {
            document.getElementById("myImg").src = url;
        }
        //上传过程中动态显示进度条
        reader.onprogress = function (event) {
            if (event.lengthComputable) {
                document.getElementById("pro").value = event.loaded / event.total;
            }
        }
    }

    //DataURL(第二种方式)src = data image/jpeg;base64,/hihfejaojshf24ji3h53i
    function toDataURL(file) {
        var reader = new FileReader();
        reader.readAsDataURL(file);
        //请求完成后,显示图片
        reader.onloadend = function (event) {
            document.getElementById("myImg").src = event.target.result;
        }
        //上传过程中动态显示进度条
        reader.onprogress = function (event) {
            if (event.lengthComputable) {
                document.getElementById("pro").value = event.loaded / event.total;
            }
        }
    }
</script>
</html>

js图片预览带进度条-风君雪科技博客