assets: go 15GB limit

Signed-off-by: Kenneth Obsequio <k80308392@gmail.com>
This commit is contained in:
2026-08-01 12:07:39 +08:00
parent aad298bc54
commit 2bff5c030a
4 changed files with 347 additions and 185 deletions
+10 -3
View File
@@ -11,13 +11,20 @@ router.get('/field-values', controller.getAssetFieldValues);
router.delete('/bulk', sensitiveOpsLimiter, controller.archiveAssets);
router.delete('/bulk/permanent', sensitiveOpsLimiter, controller.permanentlyDeleteAssets);
router.patch('/bulk-restore', controller.restoreAssets);
router.get('/upload-progress/:uploadId', controller.streamUploadProgress);
router.get('/convert-progress/:jobId', controller.streamConvertProgress);
// ─── Collection ───────────────────────────────────────────────────────────────
router.get('/', controller.getAssets);
router.post('/', handleUpload(upload.fields([{ name: 'file', maxCount: 1 }, { name: 'thumbnail', maxCount: 1 }])), controller.uploadAsset);
router.post('/batch', handleUpload(upload.array('files', 20)), controller.uploadAssetsBatch);
// Presigned-upload flow: the browser PUTs file bytes straight to storage, this
// backend never buffers them (see assets.controller.js). presign mints the
// upload URL(s); the POST / body that follows is plain JSON (no multer here).
router.post('/presign', controller.presignAssetUpload);
// Above presign's single-PUT ceiling only (see s3.service.js's
// MULTIPART_THRESHOLD) — the browser PUTs every part directly, then calls
// complete/abort here. Plain JSON, no file bytes.
router.post('/complete-multipart', controller.completeMultipartAssetUpload);
router.post('/abort-multipart', controller.abortMultipartAssetUpload);
router.post('/', controller.uploadAsset);
// ─── Dynamic routes last ──────────────────────────────────────────────────────
router.get('/:assetId', controller.getAsset);