jquery上傳文件進度條

1.css

<style type="text/css">
	.progress {
   width: 600px;
    height: 10px;
    border: 1px solid #ccc;
    border-radius: 10px;
    margin: 10px 0px;
    overflow: hidden;
}
/* 初始狀態設置進度條寬度爲0px */
.progress > div {
    width: 0px;     
    height: 100%;
    background-color: yellowgreen;
    transition: all .3s ease;
}
</style>

2.html

	<div class="progress">
    	<div></div>
	</div>
	<form id="uploadForm" style="display:block;">
		<input style="display:inline;" class="btn btn-default" type="file" name="img" multiple="multiple"></input>
		<input class="btn btn-default" type="button" value="上傳" onclick="doUpload()">
		<input type="text" id="fileNameList" style="display:none;"></input>
		<input type="hidden" name="test"></input>
	</form>

3.js

<script type="text/javascript">
//上傳文件
function doUpload(){
	var formData = new FormData($("#uploadForm")[0]);
    $.ajax({  
        url : "/upAjax",  
        type: 'POST',  
        data: formData,   
        contentType: false,  
        processData: false, 
        xhr : function(result) {
        	var xhr = new XMLHttpRequest();
            //使用XMLHttpRequest.upload監聽上傳過程,註冊progress事件,打印回調函數中的event事件
            xhr.upload.addEventListener('progress', function (e) {
                console.log(e);
                //loaded代表上傳了多少
                //total代表總數爲多少
                var progressRate = (e.loaded / e.total) * 100 + '%';

                //通過設置進度條的寬度達到效果
                $('.progress > div').css('width', progressRate);
            })
            return xhr;
        },  
        success: function(result){
        	if(result==""||result==null){
        		alert("請至少選擇一個文件~~");
        	}else{
				console.log("上傳成功~~");
			}
        },
        error : function(data) {  
            alert("上傳失敗~~");
        }
    }); 
}
</script>

後臺省略

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章