Feature: Chunked Uploads (HTTP + Client)

Purpose

Support reliable, resumable uploads of large files over unreliable connections by splitting a payload into chunks and completing with an integrity check (CRC32):

Main Flows

sequenceDiagram
  participant C as Client (ManagedCode.Storage.Client)
  participant API as StorageControllerBase
  participant Ch as ChunkUploadService
  participant S as IStorage

  loop For each chunk
    C->>API: POST /upload-chunks/upload (multipart)
    API->>Ch: AppendChunkAsync(...)
    Ch-->>API: Result
    API-->>C: Result
  end

  C->>API: POST /upload-chunks/complete (JSON)
  API->>Ch: CompleteAsync(...)
  Ch->>S: UploadAsync(mergedStream, UploadOptions) [CommitToStorage=true]
  S-->>Ch: Result<BlobMetadata>
  Ch-->>API: Result<ChunkUploadCompleteResponse> (includes checksum)
  API-->>C: Result<ChunkUploadCompleteResponse>

Components

Server-side:

Client-side:

Current Behavior

Tests