Fileupload Gunner Project | New
upload: timeout_seconds: 3600 # 1 hour max for 10GB files Never reuse temp directories across projects. The project new command automatically generates a UUID-based temp path, but verify with:
gunner validate --config ./config/upload.yaml 1. Automatic Chunk Reassembly One standout feature of the fileupload gunner project new architecture is its intelligent chunk reassembly. When a client uploads a file in chunks, Gunner temporarily stores each chunk in Redis with a TTL (time-to-live). Once all chunks are received, a background worker reassembles them in the correct order using a deterministic chunking algorithm.
project_name: "my-upload-service" version: "2.0" upload: max_file_size: 10737418240 # 10GB allowed_mime_types: - image/jpeg - image/png - application/pdf - video/mp4 chunk_size: 5242880 # 5MB chunks temp_storage: "/tmp/gunner_uploads" final_storage: type: "s3" bucket: "gunner-files" endpoint: "https://s3.amazonaws.com" fileupload gunner project new
gunner benchmark --workers 4 --file-size 100MB --concurrent 50 Instead of writing to local temp storage, configure Gunner to stream chunks directly to S3 multipart uploads:
fileupload gunner project new --name my-awesome-project --production-ready Happy (and safe) uploading! This article was last updated in May 2026. For the latest documentation, run gunner docs within any initialized project. upload: timeout_seconds: 3600 # 1 hour max for
final_storage: streaming: true s3_multipart_threshold: 5242880 # 5MB This reduces disk I/O by 70% in high-load scenarios. Set these Redis keyspace parameters for large files:
npx gunner-cli project new --type fileupload --name my-upload-service Or if using the Go-based Gunner: When a client uploads a file in chunks,
// internal/validator/mime.go func ValidateMime(data []byte) error mime := http.DetectContentType(data) if !allowedMimes[mime] return errors.New("invalid content type") return nil

