contentbox-cfml-media-management
Use this skill when implementing ContentBox media workflows, including uploads, storage abstraction with cbfs, image handling/resizing, media delivery patterns, and governance/security controls for assets.
ContentBox Media Management (CFML)
Work with the ContentBox media manager using CFML. Handle file uploads, image processing, media library organization, and media delivery.
Media Manager Overview
The media manager is accessible via the admin at cbadmin/mediamanager and provides:
- File upload and management
- Image cropping and resizing
- Folder organization
- File type validation
- Media delivery via
__mediaroute
Media Service
property name="mediaService" inject="mediaService@contentbox";
// Upload files
mediaService.upload( file, folder )
// Find media
mediaService.findBySlug( slug )
mediaService.findByPath( path )
mediaService.findAll( criteria )
// Delete media
mediaService.delete( media )
// Get media URL
mediaService.getMediaURL( media )
Media Entity
// Media properties
media.getMediaID()
media.getSlug()
media.getFileName()
media.getFileExtension()
media.getFileSize()
media.getMimeType()
media.getFilePath()
media.getMediaURL()
media.getThumbnailURL()
media.getWidth()
media.getHeight()
media.getAltText()
media.getCreatedDate()
media.getModifiedDate()
Media Delivery
Media is served via the __media route:
GET /__media/:slug
GET /__media/:slug/:size
Image Sizes
ContentBox supports on-the-fly image resizing:
// In views
<img src="#cb.mediaURL( media, 'thumbnail' )#" alt="#media.getAltText()#">
<img src="#cb.mediaURL( media, 'medium' )#" alt="#media.getAltText()#">
<img src="#cb.mediaURL( media, 'large' )#" alt="#media.getAltText()#">
File Browser Integration
ContentBox integrates with file browser modules for CKEditor and other editors:
// File browser module name (configurable)
property name="moduleSettings" inject="coldbox:moduleSettings:contentbox";
var fileBrowserModule = moduleSettings.contentbox.filebrowser_module_name;
Media in Content
Media can be embedded in entry/page content:
<!--- Image in content --->
<img src="#cb.mediaURL( media )#" alt="Description">
<!--- With specific size --->
<img src="#cb.mediaURL( media, 'thumbnail' )#" alt="Description">
CBHelper Media Methods
property name="cb" inject="CBHelper@contentbox";
// Get media URL
cb.mediaURL( media )
cb.mediaURL( media, "thumbnail" )
cb.mediaURL( media, "medium" )
cb.mediaURL( media, "large" )
// Get media path
cb.mediaPath( media )
Media Storage
Media is stored using cbfs (ContentBox File System):
property name="diskService" inject="DiskService@cbfs";
// Get the contentbox disk
var disk = diskService.get( "contentbox" );
// Disk configuration
// Path: expandPath( settingService.getSetting( "cb_media_directoryRoot" ) )
// URL: siteRoot & "/modules_app/contentbox-custom/_content"
Best Practices
- Use
cb.mediaURL()for all media URL generation - Set alt text for accessibility
- Use appropriate sizes โ thumbnail, medium, large
- Validate file types โ check MIME types before processing
- Organize with folders โ use folder structure for large media libraries
- Handle missing media โ gracefully handle deleted or missing files
- Use cbfs for storage โ leverage the disk service for file operations
- Clean up orphaned media โ remove unused files periodically
Engine Compatibility
This skill targets CFML engines (Lucee 5+, Adobe ColdFusion 2018+). For BoxLang-specific syntax and features, see the BoxLang variant of this skill.