Appearance
DAM Upload Page
File Information
- Path:
pages/_workspace_id/dam/upload.vue - Route:
/:workspace_id/dam/upload - Middleware:
authCheck,checkWorkspace,can-access-dam-module,check-if-suspended - Layout:
damLayout
Purpose
The DAM Upload page provides a dedicated interface for uploading digital assets to the workspace. It uses the AssetUpload component to handle file selection, drag-and-drop, upload queue management, and progress tracking. This page serves as the main entry point for bulk asset uploads.
Key Features
File Upload Interface
- Drag and drop file selection
- Multiple file selection support
- File validation before upload
- Upload queue management
Upload Modes
- Direct upload for small files
- Chunked/multipart upload for large files
- Automatic mode selection based on file size
Progress Tracking
- Real-time upload progress per file
- Overall queue progress
- Upload status indicators
Error Handling
- Automatic retry on failure
- Manual retry option
- Clear error messages
- Cancel upload functionality
Upload Queue Management
- View all queued uploads
- Pause/resume uploads
- Remove files from queue
- Reorder uploads
Components Used
AssetUpload- Main upload component (~/components/dam/AssetUpload.vue)- Handles file selection
- Manages upload queue
- Displays progress
- Handles errors
Data Properties
javascript
{
uploadCompleted: boolean, // Upload completion status
showUpload: boolean, // Upload component visibility
workspaceId: string // Workspace ID from route params
}Methods
onAssetUploaded()
Handles upload completion:
- Sets
uploadCompletedflag - Hides upload component
- Optionally redirects to uploaded assets page
- Updates UI state
Upload Flow
Page Load
- User navigates to
/:workspace_id/dam/upload - AssetUpload component is rendered
- Upload interface is displayed
- User navigates to
File Selection
- User selects files via:
- Drag and drop
- File input click
- Multiple file selection
- Files are validated (size, type, permissions)
- User selects files via:
Upload Initialization
- Files are added to upload queue
- Upload objects are created for each file
- Queue processing begins
Upload Execution
- Small files (< 10MB): Direct upload via FormData
- Large files (>= 10MB): Chunked/multipart upload
- Progress is tracked and displayed
- Errors are handled with retry logic
Upload Completion
- Assets are created in backend
- Thumbnails are generated (async)
- Assets are indexed in Typesense (async)
- Upload queue is updated
- Success notification is shown
API Endpoints
POST /api/assets/upload- Direct upload endpoint- Request: FormData with file and metadata
- Response: Asset object with ID and metadata
POST /s3/initiate-upload- Start multipart upload- Request: File metadata and size
- Response: Upload ID and presigned URLs
POST /s3/complete-upload- Complete multipart upload- Request: Upload ID and part ETags
- Response: Final asset location and metadata
Upload Modes
Direct Upload
- Used for files < 10MB (configurable threshold)
- Single HTTP POST request
- FormData with file and metadata
- Simpler flow, faster for small files
Chunked Upload
- Used for files >= 10MB
- File split into 10MB chunks
- Each chunk uploaded separately
- Parts assembled on S3
- Better for large files and network issues
Error Handling
- Network Errors: Automatic retry (up to 3 attempts)
- Validation Errors: Shown immediately, file not queued
- Upload Failures: Status updated, manual retry available
- Storage Full: Upload disabled, warning shown
- Permission Errors: Access denied message
State Management
The upload page integrates with:
- Upload Queue Mixin (
uploadQueue.js): Manages upload queue state - Upload Common Mixin (
upload-common.js): Common upload utilities - DAM Store: Updates asset list after upload
User Interactions
File Selection
- Click upload area or drag files
- Select multiple files
- Files appear in queue
Upload Management
- View upload progress
- Pause/resume uploads
- Cancel uploads
- Remove from queue
After Upload
- View uploaded assets
- Navigate to asset details
- Continue uploading more files
Styling
- Uses custom CSS classes:
collage-body- Main container- AssetUpload component handles its own styling
- Responsive design for mobile/tablet/desktop
Integration Points
- AssetUpload Component: Main upload interface
- Upload Queue Mixin: Queue management
- S3 API: File storage
- DAM Store: State updates
- Analytics: Upload tracking
Notes for Development
- The page is minimal, delegating most functionality to AssetUpload component
- Upload queue persists across page navigation (stored in mixin)
- Large file uploads can be paused and resumed
- Upload progress is tracked per file and overall
- Failed uploads can be retried individually
- Storage limits are checked before allowing uploads
Related Documentation
- Uploaded Assets Page - View uploaded assets
- Asset Upload Component - Upload component details
- Upload Flow Feature - Complete upload system documentation
- AWS S3 Integration - S3 storage details
- DAM Store - State management