Kentico 11 - MediaFileInfoProvider.DeleteMediaFileInfo не удаляется - PullRequest
0 голосов
/ 31 января 2019

MediaFileInfo updateFile = MediaFileInfoProvider.GetMediaFileInfo (library.LibraryID, file.Name);

Приведенная выше строка кода не удаляет файл из библиотеки мультимедиа, как я ожидал.Это для запланированного задания в Kentico 11 MVC.Новый файл создается и переименовывается Системой для предотвращения конфликтов.Я хотел бы удалить существующий файл перед импортом обновленной версии файла.Я даже был бы удовлетворен, если новый файл перезаписал существующий файл.

public void UpdateMediaFile (библиотека MediaLibraryInfo, строка fileName, строка importPath) {//LumberMarketReport.pdf и PanelMarketReport.pdf

        if (library != null)
        {
            // Prepares a path to a local file
            string filePath = fileName;

            // Prepares a CMS.IO.FileInfo object representing the local file
            CMS.IO.FileInfo file = CMS.IO.FileInfo.New(filePath);

            if (file != null)
            {
                #region "Delete Existing"
                MediaFileInfo updateFile = MediaFileInfoProvider.GetMediaFileInfo(library.LibraryID, file.Name);

                if (updateFile != null)
                {
                    MediaFileInfoProvider.DeleteMediaFileInfo(updateFile);
                }
                #endregion


                #region "Create File"
                // Creates a new media library file object
                MediaFileInfo mediaFile = new MediaFileInfo(filePath, library.LibraryID);

                // Sets the media library file properties
                mediaFile.FileName = file.Name;

                mediaFile.FileDescription = "This file was added through the API.";
                mediaFile.FilePath = "/"; // Sets the path within the media library's folder structure
                mediaFile.FileExtension = file.Extension;
                mediaFile.FileMimeType = MimeTypeHelper.GetMimetype(file.Extension);
                mediaFile.FileSiteID = SiteContext.CurrentSiteID;
                mediaFile.FileLibraryID = library.LibraryID;
                mediaFile.FileSize = file.Length;

                if (file.Name == "PanelMarketReport.pdf")
                {
                    mediaFile.FileTitle = "Panel Market Report";
                    mediaFile.SetValue("FileCategoryID", 19);
                }
                else if (file.Name == "LumberMarketReport.pdf")
                {
                    mediaFile.FileTitle = "Lumber Market Report";
                    mediaFile.SetValue("FileCategoryID", 57);
                }

                // Saves the media library file
                MediaFileInfoProvider.SetMediaFileInfo(mediaFile);


                #endregion

            }
        }
    }

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Если я не ошибаюсь MediaFileInfoProvider.DeleteMediaFileInfo удалит запись из БД, но физически не удалит файл, поэтому вам нужно вызвать CMS.IO.FileInfo.Delete(filePath), чтобы удалить ее с диска.

0 голосов
/ 31 января 2019

Я бы добавил логирование, чтобы убедиться, что ваш код попал в цель.Убедитесь, что файл обновления не является нулевым.Я думаю, что вы должны передать путь к файлу в библиотеке мультимедиа, а не только имя.

...