JavaScript大文件分段上传方法

核心代码如下:

let step = 2048 						// 切分为2048字节分段上传
let file = input.files[0]				// 从表单中获取文件
let reader = new FileReader()			// 构建文件读取对象
reader.readAsArrayBuffer(file)			// 以流的方式读取文件到对象的result属性中
reader.onload = function(){				// 由于是异步加载,绑定读取成功事件,在事件中分段读取上传
	let start = 0						// 定义起始位置
	let len = this.result.byteLength	// 获取文件总长度
	while(start < len){					// 循环切片
		let end = start + step;			// 定义本次切片结束为止
		end = end > len ? len : end		// 判断结束为止是否超过总文件长度,如果超过则结束为止为文件总长度
		let buf = blobSlice(this.result, start, end)	// 切片函数对流切片
		// upload(buf)						// 上传方法
		start = end;					// 将开始位置同步到结束位置
	}
}
// 切片函数,主要做兼容性处理
function blobSlice(blob, start, length) {
	if (blob.slice) {
		return blob.slice(start, length)
	} else if (blob.webkitSlice) {
		return blob.webkitSlice(start, length)
	} else if (blob.mozSlice) {
		return blob.mozSlice(start, length)
	} else {
		return null
	}
}

猜你喜欢

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