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

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

<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对象

猜你喜欢

转载自blog.csdn.net/csdn_meng/article/details/105222446