使用原生JS 或jquery ajax 獲取上傳圖片實時進度

話很少說 直接上代碼javascript

jquery 版

$.ajax({
        url: 'URL',
        type: 'POST',
        data: fd,
        processData: false, //用來回避jquery對formdata的默認序列化,XMLHttpRequest會對其進行正確處理  
        contentType: false, //設爲false纔會得到正確的conten-Type  
        xhr: function() { //用以顯示上傳進度  
            var xhr = $.ajaxSettings.xhr();
            if (xhr.upload) {
                xhr.upload.addEventListener('progress', function(event) {
                    var percent = Math.floor(event.loaded / event.total * 100);
                    document.querySelector("#progress .progress-item").style.width = percent + "%";
                }, false);
            }
            return xhr
        },
        success: function(data) {

        }
    })

原生js版

var xhr = new XMLHttpRequest();
    xhr.open('POST', 'url');
    // 上傳完成後的回調函數
    xhr.onreadystatechange = function() {
        if (xhr.status === 200) {  
            console.log(xhr.responseText);
        } else { 
            console.log('上傳出錯');
        }
    };
    // 獲取上傳進度
    xhr.upload.onprogress = function(event) {
        console.log(event.loaded)
        console.log(event.total)
        if (event.lengthComputable) {
            var percent = Math.floor(event.loaded / event.total * 100);
            document.querySelector("#progress .progress-item").style.width = percent + "%";
            // 設置進度顯示
            console.log(percent)
        }
    };
    xhr.send(fd);

html 和相關進度條csscss

<div id="progress">
        <div class="progress-item"></div>
    </div>
#progress {
        height: 10px;
        width: 300px;
        border: 1px solid gold;
        position: relative;
        border-radius: 5px;
    }
    
    #progress .progress-item {
        height: 100%;
        position: absolute;
        left: 0;
        top: 0;
        background: chartreuse;
        border-radius: 5px;
        transition: width .3s linear;
    }

大字表示注意,網速快了 看到的進度條是一瞬間完成,打印的percent也都是100,若是要看比較明顯的效果能夠把控制檯的模擬網速調成slow 3G,就能看到比較明顯的效果。

clipboard.png

有任何問題 下方留言html

相關文章
相關標籤/搜索