umbraco заменить файл с тем же именем в средстве выбора медиа

Как я могу расширить средство выбора мультимедиа Umbraco, чтобы перезаписать файл, если загружен файл с тем же именем?

введите здесь описание изображения

На изображении выше он создает два файла, но я хочу, чтобы первый был заменен новым файлом.

Я использую умбрако 7.11.1.


person Pragnesh Patel    schedule 05.09.2018    source источник
comment
Насколько мне известно, для этого нет уже готового решения, возможно, из-за того, как медиафайлы хранятся за кулисами (против id, а не в виде дерева). Если вы склонны попробовать собственное исправление, возможно, стоит попытаться перехватить вызов загрузки в Angular и запустить проверку имени файла, чтобы создать собственное приглашение.   -  person Mike B    schedule 05.09.2018
comment
Эй, я думаю, что вам нужно перейти на вкладку мультимедиа в Umbraco и щелкнуть фактический файл в дереве (слева). Прямо под файлом должна быть ссылка «удалить файл» с красным крестиком слева, которая позволит вам удалить файл и добавить другой, который в основном заменяет файл, просто не загружая файл с тем же именем. . Я думаю, что это предназначено.   -  person Jabberwocky    schedule 10.09.2018
comment
Спасибо @Jabberwocky, да, это один из способов. но некоторые пользователи не имеют доступа к вкладке мультимедиа и могут загружать только со страницы контента.   -  person Pragnesh Patel    schedule 11.09.2018
comment
Если вы зайдете в «Содержимое» и наведете курсор на выбранное изображение, появится маленький значок в виде карандаша. Это должно позволить вам заменить изображение так, как я объяснил ранее. Я не уверен, что произойдет, если у пользователя есть только привилегии на вкладке контента   -  person Jabberwocky    schedule 11.09.2018


Ответы (1)


Пробовали ли вы создать ApplicationEventHandler и подключиться к одному из медиа-событий, перечисленных здесь: https://our.umbraco.com/Documentation/Reference/Events/MediaService-Events Затем вы можете сравнить файл, который пользователь пытается загрузить, с тем, что уже находится в кэше мультимедиа.

e.g.

public class MediaSaving : ApplicationEventHandler
{

    protected override void ApplicationStarted(UmbracoApplicationBase 
   umbracoApplication, ApplicationContext applicationContext)
    {
        MediaService.Saving += MediaServiceSaving;
    }

    void MediaServiceSaving(IMediaService sender, SaveEventArgs<IMedia> evt)
    {
        foreach (var mediaItem in evt.SavedEntities)
        {
            //Check if a new upload and correct type etc
            //Compare file paths and overwrite if appropriate
        }

    }
}
person f33n3y    schedule 12.09.2018