Как разделить файл с минимальным размером чанка

У меня есть функция которая делит большой файл на небольшие кусочки. Есть проблема что этот код делит фалй на части, но последний кусок может быть меньше чем chunkSize

const polyfilSlice = (file, chunkStart, chunkEnd, type) => {
  if(file.slice) {
    return file.slice([chunkStart], [chunkEnd], type)
  } 
  if(file.webkitSlice){
    return file.webkitSlice([chunkStart], [chunkEnd], type)
  }

  if(file.mozSlice) {
    return file.mozSlice([chunkStart], [chunkEnd], type)
  }
}


const getChunks = (file, chunkSize) => {
  const fileSize = file.size
  const chunkCount = fileSize % chunkSize === 0 ? fileSize % chunkSize : Math.floor(fileSize / chunkSize)  + 1
  let chunkStart = 0
  let chunkEnd = chunkSize
  var chunks = [];
  
  for (var i = 0; i < chunkCount; i += 1) {
    chunks.push(polyfilSlice(file, chunkStart, chunkEnd, "video/mp4"));
    chunkStart = chunkEnd
    chunkEnd = chunkEnd + chunkSize >= file.size ? file.size : chunkEnd + chunkSize
  }

  return chunks;
}

Есть необходимость что бы размер каждого чанка был не меньше и не больше установленых границ. Может кто подскажет алгоритм какой то разделения


Ответы (1 шт):

Автор решения: Влад Лесной

Нашел ответ. Может кому то поможет.

let fileSize =....
let minChunkSize = 5 * 1048576 // 5MB
let chunkCount = fileSize % minFileSize === 0 ? fileSize % minFileSize : Math.floor(fileSize / minFileSize)
let chunkSize = fileSize / chunkCount

И потом с помощью этого chunkSize делю уже файл на конкретные части таким образом каждая часть являеться больше установленого минимум

→ Ссылка