@rpldy/chunked-sender
Version:
adds chunked upload capabilities on top of the regular XHR uploads
24 lines • 750 B
JavaScript
import ChunkedSendError from "./ChunkedSendError";
const getChunks = (item, options, startByte = 0) => {
const {
chunkSize
} = options;
const size = startByte ? item.file.size - startByte : item.file.size;
if (size <= 0) {
throw new ChunkedSendError(`start byte ${startByte} is invalid. File size: ${item.file.size}`);
}
const count = size <= chunkSize ? 1 : Math.ceil(size / chunkSize);
return new Array(count).fill(null).map((n, index) => {
const start = chunkSize * index + (startByte || 0);
return {
id: `${item.id}_chunk-${index}`,
start,
end: Math.min(start + chunkSize, item.file.size),
data: null,
attempt: 0,
uploaded: 0,
index
};
});
};
export default getChunks;