feat(editor+trimmer): save output to cloud account via V2 File service

- New /api/files/upload: generic user-scoped Browser→Next→MinIO upload
  (presign → PUT → confirm), 200MB cap, image+video only, returns public URL
- image-editor-export: stageToBlob() + saveStageToCloud(); "Save to my account"
  button in the Image Editor export popover
- Trimmer: "Save to my account" button uploads the trimmed clip blob
- i18n: saveToCloud/savingToCloud/savedToCloud/saveToCloudFailed in fa+en
  (parity 1002/1002)

Connects the two client-side editors to V2 storage — output now lands in the
user's account instead of only a local download.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-05 12:29:03 +03:30
parent 52be5be93f
commit 1142c38c62
6 changed files with 224 additions and 7 deletions
+10 -2
View File
@@ -671,7 +671,11 @@
"trimAndCrop": "Trim & Crop",
"loadingEngine": "Loading FFmpeg engine…",
"progress": "Progress",
"download": "Download {format}"
"download": "Download {format}",
"saveToCloud": "Save to my account",
"savingToCloud": "Saving…",
"savedToCloud": "Saved to your account",
"saveToCloudFailed": "Could not save"
},
"componentsTrimmerTrimmerStrip": {
"heading": "Trim",
@@ -866,7 +870,11 @@
"quality": "Quality",
"download": "Download",
"canvasNotReady": "Canvas not ready.",
"exportStarted": "Export started"
"exportStarted": "Export started",
"saveToCloud": "Save to my account",
"savingToCloud": "Saving…",
"savedToCloud": "Saved to your account",
"saveToCloudFailed": "Could not save to your account"
},
"componentsImageEditorPanelsAdjustPanel": {
"emptyState": "Open an image to use adjustments.",