Skip to content

Instantly share code, notes, and snippets.

@nul800sebastiaan
Created March 27, 2024 11:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nul800sebastiaan/ab42d2bb267ecac0e682f970528bc902 to your computer and use it in GitHub Desktop.
Save nul800sebastiaan/ab42d2bb267ecac0e682f970528bc902 to your computer and use it in GitHub Desktop.
Umbraco 9+ rename media item to filename
using System.Text.Json;
using Umbraco.Cms.Core.Composing;
using Umbraco.Cms.Core.Events;
using Umbraco.Cms.Core.Notifications;
namespace MySite;
public class FilenameHandler : IComposer
{
public void Compose(IUmbracoBuilder builder)
{
builder.AddNotificationAsyncHandler<MediaSavingNotification, NormalizeFilename>();
}
}
public class NormalizeFilename : INotificationAsyncHandler<MediaSavingNotification>
{
public Task HandleAsync(MediaSavingNotification notification, CancellationToken cancellationToken)
{
foreach (var media in notification.SavedEntities)
{
var json = media.GetValue<string>("umbracoFile");
if(json == null) continue;
var file = JsonSerializer.Deserialize<UmbracoFile>(json);
if(file == null || string.IsNullOrWhiteSpace(file.src)) continue;
var filename = file.src;
filename = filename.Substring(filename.LastIndexOf('/') + 1);
media.Name = filename;
}
return Task.CompletedTask;
}
}
public class UmbracoFile
{
public string src { get; set; }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment