1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| // チャンクアップロード実装
async function uploadInChunks(file, chunkSize = 1024 * 1024) {
const totalChunks = Math.ceil(file.size / chunkSize);
for (let i = 0; i < totalChunks; i++) {
const start = i * chunkSize;
const end = Math.min(start + chunkSize, file.size);
const chunk = file.slice(start, end);
await fetch('/upload', {
method: 'POST',
headers: {
'Content-Range': `bytes ${start}-${end - 1}/${file.size}`,
'X-Chunk-Index': i,
'X-Total-Chunks': totalChunks
},
body: chunk
});
}
}
|