Skip to content

[6.x] Add upload sessions and Uppy transport API - #19604

Open
riasvdv wants to merge 7 commits into
6.xfrom
feature/upload-session-transports
Open

[6.x] Add upload sessions and Uppy transport API#19604
riasvdv wants to merge 7 commits into
6.xfrom
feature/upload-session-transports

Conversation

@riasvdv

@riasvdv riasvdv commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Description

Adds a shared upload-session API with ownership checks, expiry cleanup, resumable tus transfers, direct S3 multipart transfers, and asset destination handling. A standalone Uppy client exposes upload, progress, pause/resume, retry, and cancellation through Craft.Uploads.

Browser
  │
  │ create upload session + destination parameters
  ▼
Uploads::start()
  ├─ authorize destination through UploadHandler
  ├─ resolve tempAssetUploadFs
  ├─ choose uploader:
  │    explicit uploader setting, or inferred from temporary filesystem
  ├─ create session with temporary disk, uploader, and destination parameters
  └─ Uploader::start() returns UploadSetup:
       chunkSize + state → saved on session
       transportType + transportOptions → returned to browser
  │
  │ transfer bytes using the selected Uppy transport
  ▼
Temporary upload filesystem
  ├─ Tus: browser → PHP → temporary disk
  └─ S3: browser → temporary S3 disk directly
  │
  │ complete session
  ▼
Uploads::complete()
  ├─ reauthorize destination
  ├─ Uploader::complete() → staged UploadedFile
  ├─ verify file size
  └─ UploadHandler::complete()
       ├─ Assets: copy temporary file → volume filesystem
       └─ User photo: obtain local copy → save photo
  │
  ▼
Uploads calls Uploader::abort() to clean up temporary files

See https://github.com/craftcms/cms/blob/feature/upload-session-transports/docs/uploads.md

@riasvdv
riasvdv added this pull request to stack #19607 September 11, 2026 09:10
@riasvdv riasvdv changed the title Add upload sessions and Uppy transport API [6.x] Add upload sessions and Uppy transport API Sep 11, 2026
@riasvdv
riasvdv removed this pull request from stack #19607 September 11, 2026 09:12
@riasvdv
riasvdv added this pull request to stack #19609 September 11, 2026 09:12
@github-actions

github-actions Bot commented Sep 11, 2026

Copy link
Copy Markdown

📚 Storybook previews

@craftcms/uiopen Storybook

No changed components detected in this Storybook.

resources/jsopen Storybook

No changed components detected in this Storybook.

@riasvdv
riasvdv force-pushed the feature/upload-session-transports branch from 3b46e06 to 1a43b54 Compare September 11, 2026 11:09
Base automatically changed from feature/fix-user-photo-selection to 6.x September 11, 2026 11:39
@riasvdv
riasvdv marked this pull request as ready for review September 11, 2026 17:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant