vue3 文件夹上传进度获取

//属性lengthComputable主要表明总共需要完成的工作量和已经完成的工作是否可以被测量
//如果lengthComputable为false,就获取不到e.total和e.loaded
if (e.lengthComputable) {
var rate = (uploadRate = e.loaded / e.total); //已上传的比例
if (rate < 1) {
//这里的进度只能表明文件已经上传到后台,但是后台有没有处理完还不知道
//因此不能直接显示为100%,不然用户会误以为已经上传完毕,关掉浏览器的话就可能导致上传失败
//等响应回来时,再将进度设为100%
uploadRate = rate;
}
}

1.函数定义

async function upzip(params:any) {
	let config = {
		onUploadProgress: function (e) {
			
			
				if (e.progress.toFixed(2) < 1) {
					pcuploadRate.value = e.progress.toFixed(2) * 100;
				}
		
			// if (e.lengthComputable) {
			// 	var rate = (uploadRate = e.loaded / e.total); //已上传的比例
			// 	if (rate < 1) {
			// 		//这里的进度只能表明文件已经上传到后台,但是后台有没有处理完还不知道
			// 		//因此不能直接显示为100%,不然用户会误以为已经上传完毕,关掉浏览器的话就可能导致上传失败
			// 		//等响应回来时,再将进度设为100%
			// 		uploadRate = rate;
			// 	}
			// }
		},
	};
	let param = { params, config };
	try {
		const { code, msg } = await uploadfile(param);
		if (code > 0) {
			pcuploadRate.value = 100;
			ElMessage({
				showClose: true,
				message: '上传成功',
				type: 'success',
			});
		} else {
			ElMessage({
				showClose: true,
				message: '上传失败' + msg,
				type: 'error',
			});
		}
	} catch (e) {
		ElMessage({
			showClose: true,
			message: '错误: ' + e,
			type: 'error',
			duration: 0,
		});
	}
}

2.接口定义

export function uploadfile(param: any) {
	return request({
		url: 'xxxxxx',
		method: 'post',
		data: param.params,
		headers: { 'Content-type': 'multipart/form-data' },
		onUploadProgress: param.config.onUploadProgress,
	});
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值