Packages
Cloudinary
Introduction
JCC Express MVC includes a Cloudinary integration for uploading images and media from HTTP requests. The service is opt-in — nothing is registered until you publish the component and configure your credentials.
Primary surfaces:
req.storeToCloudinary(fileName, option?, returnUrl?)— upload from multipart form fieldsFormRequest.storeToCloudinary(...)— same API on form request subclassesapp.resolve("Cloudinary")— direct access to the Cloudinary client for manual uploads, URL generation, etc.
Installation
Run the publish command from your project root:
Bash
The command is idempotent — safe to run repeatedly. It:
- Creates
app/Config/cloudinary.ts(skipped if it already exists; passforce=trueto overwrite). - Wires
cloudinaryintoapp/Config/index.ts. - Wires
CloudinaryServiceProviderintobootstrap/providers.ts.
Bash
After publishing, add your Cloudinary credentials to .env:
env
Restart your dev server (bun run dev) so the provider picks up the new config.
Uploading from requests
Once published and configured, upload a file field directly to Cloudinary:
TypeScript
See Request for the full API (returnUrl, multiple files, upload options, and FormRequest usage).
Direct client usage
Resolve the Cloudinary client from the container:
TypeScript
Summary
- Run
bun artisanNode publish Cloudinaryto enable the integration. - Set
CLOUDINARY_NAME,CLOUDINARY_API_KEY, andCLOUDINARY_SECRETin.env. - Use
req.storeToCloudinary()for request uploads orapp.resolve("Cloudinary")for direct access.