JavaScript分割文件(Blob对象|File对象)

本文介绍了一种在遇到较大文件上传时的处理方法,通过使用Blob对象的slice方法将文件分割成更小的部分进行上传,有效解决了大文件上传的问题。

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

在遇到较大文件上传时往往需要对文件进行分割上传,整理一小段文件分割例子

<input type='file' id='fileSelector' />
<button onclick="sliceFile">分割</button>
<script>
let SLICE_SIZE = 1024 * 1024;
function sliceFile() {
	let fileSelector = document.querySelector('#fileSelector');
	if (fileSelector.value == '') {
		alert('请选择要分割的文件');
		return;
	}
	
	// 这个file继承自Blob对象
	let file = fileSelector.files[0];
	let fileSize = file.size;
	if (fileSize > SLICE_SIZE){
		// 计算需要分几份
		let sliceCount = Math.ceil(fileSize / SLICE_SIZE);
		for (let i = 0; i < sliceCount; ++i) {
			// 计算分片起始位置
			let start = i * SLICE_SIZE;
			// 计算分片结束位置
            let end = start + SLICE_SIZE;
            // 最后一片特殊处理
            if (end > fileSize) {
                end = fileSize;
            }
            let newBlob = file.slice(start, end);
           	// balabala 业务代码
		}
		return;
	}
	// 不需要分割
	// balabala 业务代码
}
</script>

主要使用的是 Blob对象的slice方法
Blob.slice(startIndex, endIndex);
slice方法返回一个新的Blob对象

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值