feat: add chunked upload API for large file uploads #21

Merged
xiaoxia merged 2 commits from feature/chunked-upload into develop 2026-06-26 20:57:56 +08:00
Owner

Summary

Implement chunked upload API for mobile clients to upload large files (up to 2GB).

API Endpoints

  • POST /api/v1/upload/chunk/init - Initialize chunked upload

    • Parameters: filename, file_size, total_chunks, content_type, project_id, library_id
    • Returns: upload_id, chunk_size, total_chunks, filename, expires_at
  • POST /api/v1/upload/chunk/{upload_id}/{chunk_index} - Upload single chunk

    • Returns: message, chunk_index, uploaded_chunks, total_chunks
  • GET /api/v1/upload/chunk/{upload_id}/status - Get upload status (for resume)

    • Returns: upload_id, filename, file_size, total_chunks, uploaded_chunks, status
  • POST /api/v1/upload/chunk/{upload_id}/complete - Complete upload and merge chunks

    • Returns: storage_key, ingest_job_id, url

Features

  • Support files up to 2GB
  • Default chunk size: 5MB
  • File type whitelist validation (same as existing upload.py)
  • 24-hour expiration for incomplete uploads
  • Automatic cleanup of expired uploads
  • Resume support via status endpoint

Files Changed

  • apps/api/app/schemas/chunked_upload.py - Request/Response schemas
  • apps/api/app/api/routes/chunked_upload.py - API routes
  • apps/api/app/api/router.py - Route registration
## Summary Implement chunked upload API for mobile clients to upload large files (up to 2GB). ### API Endpoints - `POST /api/v1/upload/chunk/init` - Initialize chunked upload - Parameters: filename, file_size, total_chunks, content_type, project_id, library_id - Returns: upload_id, chunk_size, total_chunks, filename, expires_at - `POST /api/v1/upload/chunk/{upload_id}/{chunk_index}` - Upload single chunk - Returns: message, chunk_index, uploaded_chunks, total_chunks - `GET /api/v1/upload/chunk/{upload_id}/status` - Get upload status (for resume) - Returns: upload_id, filename, file_size, total_chunks, uploaded_chunks, status - `POST /api/v1/upload/chunk/{upload_id}/complete` - Complete upload and merge chunks - Returns: storage_key, ingest_job_id, url ### Features - Support files up to 2GB - Default chunk size: 5MB - File type whitelist validation (same as existing upload.py) - 24-hour expiration for incomplete uploads - Automatic cleanup of expired uploads - Resume support via status endpoint ### Files Changed - `apps/api/app/schemas/chunked_upload.py` - Request/Response schemas - `apps/api/app/api/routes/chunked_upload.py` - API routes - `apps/api/app/api/router.py` - Route registration
xiaoxia added 1 commit 2026-06-26 20:16:07 +08:00
feat: add chunked upload API for large file uploads
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Waiting to run
CI/CD Pipeline / Validate Code Quality And Tests (push) Has been cancelled
e44ebc535e
- POST /upload/chunk/init - Initialize chunked upload
- POST /upload/chunk/{upload_id}/{chunk_index} - Upload single chunk
- POST /upload/chunk/{upload_id}/complete - Complete upload and merge chunks
- GET /upload/chunk/{upload_id}/status - Get upload status for resume

Features:
- Support files up to 2GB
- Default chunk size: 5MB
- File type whitelist validation
- 24-hour expiration for incomplete uploads
- Automatic cleanup of expired uploads
xiaoxia added 1 commit 2026-06-26 20:55:12 +08:00
fix: 修复分片上传并发竞态和过期清理问题
CI/CD Pipeline / Validate Code Quality And Tests (push) Waiting to run
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
81828af62b
xiaoxia merged commit 9dbbf1ab3c into develop 2026-06-26 20:57:56 +08:00
Sign in to join this conversation.