A TUS (resumable upload) server with added multipart functionality for parallel upload performance with pipe efficiency around 85%.
This extends the standard TUS protocol with:
- Part Splitting: Large files are automatically split into multiple parts
- Parallel Part Uploading: Parts upload simultaneously for better performance
- Automatic Part Assembly: Server reassembles parts back into original files
- Original Filename Resolution: Files are optionally saved with their original names
- Duplicate File Handling: Configurable options for handling file conflicts
- Queue Multiple Files: Set maximum number of selectable files
- Client: Splits large files into 1-6 parts based on file size
- Upload: Each part uploads in parallel using standard TUS protocol
- Server: Automatically detects when all parts are complete and reassembles them
- Result: Original file appears in destination directory with proper filename
- < 512MB: 1 part
- 512MB - 1GB: 2 parts
- 1GB - 2GB: 4 parts
- > 2GB: 6 parts
npm install
npm start
Open http://localhost:1080
to upload files.
Environment variables:
PORT
(default: 1080)STAGING_DIR
(default: ./staging)MOUNT_PATH
(default: ./test_volume)
docker build -t tus-server .
docker run -p 1080:1080 -v $(pwd)/uploads:/app/test_volume tus-server
- Backend: Express.js + @tus/server
- Frontend: tus-js-client
- Extensions: Custom multipart manager for parallel uploads
ISC License