diff options
| author | Pinapelz <yukais@pinapelz.com> | 2026-02-06 16:32:10 -0800 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2026-02-06 16:32:10 -0800 |
| commit | 593f5ab225a17719207b873a98c1ed633e5d57e7 (patch) | |
| tree | d7db07a24e3f792aab2549f7b2b9b54f59b5bd37 /src/main/java/com/pinapelz/frontend/MultipartFileManager.kt | |
| parent | c2a809718173d03b09f19d7da3489e0ed4d75851 (diff) | |
# Conflicts:
# src/main/java/com/pinapelz/frontend/App.kt
Diffstat (limited to 'src/main/java/com/pinapelz/frontend/MultipartFileManager.kt')
| -rw-r--r-- | src/main/java/com/pinapelz/frontend/MultipartFileManager.kt | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/src/main/java/com/pinapelz/frontend/MultipartFileManager.kt b/src/main/java/com/pinapelz/frontend/MultipartFileManager.kt index 257521d..70546dd 100644 --- a/src/main/java/com/pinapelz/frontend/MultipartFileManager.kt +++ b/src/main/java/com/pinapelz/frontend/MultipartFileManager.kt @@ -224,7 +224,7 @@ class MultipartFileManager( when (config) { is SplitConfig.BySize -> { - val partSize = config.sizeInBytes - (16 * 1024); + val partSize = config.sizeInBytes - (16 * 1024) val numParts = ceil(fileSize.toDouble() / partSize.toDouble()).toInt() println("Splitting file: ${fileSize} bytes into ${numParts} parts of max ${partSize} bytes each") @@ -247,7 +247,32 @@ class MultipartFileManager( } } - is SplitConfig.ByParts -> { // TODO: stubbed not yet implemented + is SplitConfig.ByParts -> { + val partSize = fileSize / config.numParts + var remainingBytes = fileSize + var offset = 0L + + uploadedFile.content().use { inputStream -> + for (partId in 1..config.numParts) { + val partName = "part_$partId" + val partPath = workingDir.resolve(partName) + + val currentPartSize = if (partId == config.numParts) remainingBytes else partSize + val partBytes = ByteArray(currentPartSize.toInt()) + inputStream.read(partBytes, 0, currentPartSize.toInt()) + + Files.write(partPath, partBytes) + partsMeta += FilePartMeta( + id = partId.toString(), + name = partName, + size = currentPartSize, + path = partPath + ) + + offset += currentPartSize + remainingBytes -= currentPartSize + } + } } } val metadata = SplitMetadata( |
