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
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值