上传大文件每个fragment不能大于60Mb,必须一片上传完才能续传下一片,所以,得用异步http, blob.slice() 为右半开区间 [ )
var maxUnit = fileSize < (60 * 1024 * 1024) ? fileSize : (60 * 1024 * 1024) - 1; for (var i = 0; i < fileSize; i += maxUnit) { let rangeBegin = i; let rangeEnd = (i + maxUnit - 1) < fileSize ? (i + maxUnit - 1) : (fileSize - 1); let contentRange = 'bytes ' + rangeBegin + '-' + rangeEnd + '/' + fileSize; let contentLen = (rangeEnd != fileSize - 1) ? maxUnit : fileSize - i; xhr.open('PUT', jsonRes["uploadUrl"], false); xhr.setRequestHeader('Authorization', 'Bearer ' + token); //xhr.setRequestHeader('Content-Length', contentLen); xhr.setRequestHeader('Content-Range', contentRange); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.send(blob.slice(rangeBegin, rangeEnd + 1)); }
