上传文件进度条 进度事件progress

本文介绍了一种使用XMLHttpRequest和jQuery实现文件上传进度显示的方法。通过重写XMLHttpRequestUpload对象的onprogress事件,可以实时更新进度条来显示文件上传的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XMLHttpRequestopen之前重写XMLHttpRequestUpload对象的进度事件progress方法,监听progress方法,计算进度,从而设置进度条。

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title></title>
	<link rel="stylesheet" href="">
	<style>
		.progress {
		    width: 1000px;
		    height: 20px;
		    border: 1px solid #000;
		    margin: 10px;
		}

		.progress > div {
		    width: 0px;     
		    height: 100%;
		    background-color: red;
		}
	</style>
</head>
<body>
	<input type="file" id="file">
	<div class="progress">
	    <div></div>
	</div>
	<button onclick="ajaxUpload()">上传</button>

	<script src="jquery-3.3.1.js"></script>

	<script>
		function ajaxUpload() {
		    var file = $('#file').get(0).files[0];
		    var formdata = new FormData();
		    formdata.append('file', file);
		    $.ajax({
		        url: 'aaa.php',
		        type: 'post',
		        dataType: 'json',
		        data: formdata,
		        processData: false,  //必须设置
		        contentType: false,  //必须设置
		        xhr: () => {
		            var xhr = new XMLHttpRequest();
		            //console.log(xhr);
		            xhr.upload.onprogress = (e) => {
		                console.log(e);
		            	var progressWidth = (e.loaded / e.total) * 100 + '%';
		                $('.progress > div').css('width', progressWidth);
		            }
		            return xhr;
		        }
		    })
		}
	</script>
</body>
</html>

效果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值