Да будет код...
This commit is contained in:
31
lib_chunk_file.js
Normal file
31
lib_chunk_file.js
Normal file
@@ -0,0 +1,31 @@
|
||||
|
||||
// Размер чанка в байтах
|
||||
const CHUNK_SIZE = 1024 * 1024; // 1MB
|
||||
|
||||
async function uploadFileInChunks(file) {
|
||||
|
||||
const totalChunks = Math.ceil(file.size / CHUNK_SIZE);
|
||||
|
||||
for (let chunkIndex = 0; chunkIndex < totalChunks; chunkIndex++) {
|
||||
|
||||
// Вычисляем начало и конец текущего чанка
|
||||
const start = chunkIndex * CHUNK_SIZE;
|
||||
const end = Math.min(start + CHUNK_SIZE, file.size);
|
||||
|
||||
// Извлекаем чанк из файла
|
||||
const chunk = file.slice(start, end);
|
||||
|
||||
// Создаём FormData для отправки чанка
|
||||
const formData = new FormData();
|
||||
formData.append('file_chunk', chunk);
|
||||
formData.append('chunk_index', chunkIndex);
|
||||
formData.append('total_chunks', totalChunks);
|
||||
formData.append('filename', file.name);
|
||||
|
||||
// Отправляем чанк на сервер
|
||||
await fetch('upload.php', {
|
||||
method: 'POST',
|
||||
body: formData
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user