directus-extension-assets-by-filename
v1.1.1
Published
Retrieve files by filename_disk instead of UID
Downloads
14
Maintainers
Readme
Directus Assets by Filename Extension
A Directus endpoint extension that allows you to retrieve files by filename instead of requiring the file UUID.
Why Use This Extension?
Instead of requesting via file uuid:
/assets/550e8400-e29b-41d4-a716-446655440000?width=800You can request with filename_disk:
/assetsf/product-photo.jpg?width=800And make it even shorter with a custom env variable:
/mypath/product-photo.jpg?width=800Features
- Filename Lookup: Query files by
filename_disk - Full Compatibility: All transformation parameters (width, height, presets, etc.) work exactly like the default assets endpoint
- Permission Respect: Uses Directus's accountability system to ensure proper permission checks
- Cache Preservation: Inherits complete caching behavior from Directus's default assets endpoint
- Configurable Endpoint: Customize the base endpoint path via environment variable for even shorter URLs
Installation
Via Directus Marketplace
- Open your Directus project
- Navigate to Settings → Extensions
- Click Browse Marketplace
- Search for "Assets by Filename"
- Click Install
Manual Installation
- Build the extension:
npm run build- Copy the
distfolder to your Directus extensions directory:
/extensions/directus-extension-assets-by-filename/- Restart your Directus instance
Usage
Once installed, the extension automatically adds new endpoints. No additional configuration is required, but you can customize the endpoint path using a custom environment variable.
Using the Endpoints
The extension provides short URL patterns:
/assetsf/:filename_disk- Lookup byfilename_disk
Custom (when ASSETS_FILENAME_ENDPOINT_PATH is set, e.g., to mypath):
/mypath/:filename_disk- Lookup byfilename_disk
Adding Transformations
All standard Directus transformation parameters work with these endpoints. Simply append them as query parameters:
/assetsf/my-image.jpg?width=800&height=600&fit=cover&quality=90&format=webpCustom:
/mypath/my-image.jpg?width=800&height=600&fit=cover&quality=90&format=webpConfiguration
Environment Variables
You can customize the endpoint path using the ASSETS_FILENAME_ENDPOINT_PATH environment variable:
- Set to custom value (e.g.,
ASSETS_FILENAME_ENDPOINT_PATH=mypath):- Endpoint becomes available under
/mypath - Routes have no prefix, making URLs even shorter
- Example:
https://directus_domain/mypath/product-photo.jpg - Path names not allowed (reserved by Directus):
items,users,roles,permissions,files,collections,relations,fields,settings,activity,revisions,presets,flows,operations,webhooks,dashboards,panels,translations,server,extensions,auth,graphql,static,folders,notifications,utils,schema,assets
- Endpoint becomes available under
⚠️ Important:
Make sure yourASSETS_FILENAME_ENDPOINT_PATHdoes not overlap with any endpoint routes used by other endpoint extensions:
Examples
<!-- Using filename_disk -->
<img src="/assetsf/ccc1123d-a62a-454e-82d1-1c8a5dfc1acd.png" />Custom (with ASSETS_FILENAME_ENDPOINT_PATH=mypath):
<!-- Using filename_disk -->
<img src="/mypath/product-photo.jpg?width=1920" />All standard Directus transformation parameters work:
width,height,fit,quality,format,preset,transforms,key,download
How It Works
- Looks up the file in
directus_filesby the specified field - Checks permissions using Directus's FilesService
- Proxies to the default
/assets/:uuidendpoint with all query parameters preserved - Forwards all headers, status codes, and response body (preserving cache behavior)
Error Handling
- File Not Found: Returns
404 Not Found - Permission Denied: Returns
403 Forbidden
License
MIT
