ajax上传进度条

本文介绍如何使用HTML、CSS及JavaScript实现一个简单的文件上传进度条。通过监听文件上传过程中的onprogress事件,实时更新进度条的显示状态及百分比。

HTML

	<input type="file" name="" id="file">
	<div id="wrap">
		<div id="bar"></div>
		<span>0%</span>
	</div>

CSS

	#wrap{
		height: 50px;
		border: 5px solid yellow;
		position: relative;
		text-align: center;
		line-height: 50px;
		font-size: 28px;
		font-weight: bold;
	}
	#bar{
		height: 100%;
		width: 0;
		background: green;
		position: absolute;
		left: 0;
		z-index: -1;
	}

JS

	var file = document.getElementById('file');
	var wrap = document.getElementById('wrap');
	var bar = document.getElementById('bar');
	var wrapSpan = wrap.getElementsByTagName('span')[0];
	var maxWidth = wrap.clientWidth;

	file.onchange = function(){

		var f = this.files[0];

		var xhr = new XMLHttpRequest();

		xhr.open('post','php/post_file.php',true);
		xhr.onload = function(){
			console.log(this.responseText);
		};
		//上传过程中触发
		xhr.upload.onprogress = function(ev){
			/*
				ev.total上传文件的总大小
				ev.loaded 当前上传的大小。
			*/
			var scale = ev.loaded/ev.total;
			wrapSpan.innerHTML = (scale*100).toFixed(2)+'%';
			bar.style.width = maxWidth*scale+'px';

			// console.log(ev.total,ev.loaded);
		}
		var fd = new FormData();

		fd.append('file',f);
		
		xhr.send(fd);
	};

  

转载于:https://www.cnblogs.com/yangxue72/p/8252147.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值