尝试通过Kentico API覆盖现有文件时,Kentico CMS创建其他文件

正如您在下面的屏幕快照中看到的那样,当尝试使用Kentico API 11.0.26 覆盖现有媒体文件时,Kentico CMS正在创建一个附加文件。我的目标是只有一个文件。

尝试通过Kentico API覆盖现有文件时,Kentico CMS创建其他文件

这是我的API代码

// Gets the media library
MedialibraryInfo library = MedialibraryInfoProvider.GetMedialibraryInfo(libraryName,siteName);

if (library != null)
{
    // Gets all .png files from the "NewFolder" folder of the specified media library
    var mediaFiles = MediaFileInfoProvider.GetMediaFiles()
                                                .WhereEquals("FilelibraryID",library.libraryID)
                                                .WhereEquals("FileName",fileName)
                                                .WhereStartsWith("FilePath",folderName);

    if (mediaFiles.Count == 0)//no existing file by that name,create new one
    {
        // Creates a new media library file object
        MediaFileInfo mediaFile = new MediaFileInfo();

        // Sets the media library file properties
        mediaFile.FileSiteID = siteId;
        mediaFile.FilelibraryID = library.libraryID;
        mediaFile.FileName = fileName;
        mediaFile.FileTitle = headerSubtitle;
        mediaFile.FileDescription = "some report";
        mediaFile.FilePath = string.Format("{0}/",folderName); // Sets the path within the media library's folder structure
        mediaFile.FileExtension = ".pdf";
        mediaFile.FileMimeType = MimeTypeHelper.GetMimetype(".pdf");
        using (StreamReader streamReader = new StreamReader(outputFilename))
        {
            mediaFile.FileBinaryStream = streamReader.BaseStream;
            mediaFile.FileSize = streamReader.BaseStream.Length;

            // Saves the media library file
            MediaFileInfoProvider.SetMediaFileInfo(mediaFile);
        }
    }
    else//file already existing by that name,update it's contents
    {
        // Gets the media file
        MediaFileInfo updateFile = mediaFiles.FirstObject;
        using (StreamReader streamReader = new StreamReader(outputFilename))
        {
            updateFile.FileBinaryStream = streamReader.BaseStream;
            updateFile.FileSize = streamReader.BaseStream.Length;


            // Saves the media library file
            MediaFileInfoProvider.SetMediaFileInfo(updateFile);
        }
    }
}
iamhenry_c_s_d_n 回答:尝试通过Kentico API覆盖现有文件时,Kentico CMS创建其他文件

请尝试将SetMediaFileInfo方法的sureUniqueFileName参数设置为false,例如:MediaFileInfoProvider.SetMediaFileInfo(mediaFile,false);

如果这不起作用,最好先删除现有文件。

,

也许MediaFileInfoProvider.SetMediaFileInfo(mediaFile,false);解决了这个问题,但是在一个项目中,我通过在保存新文件之前删除前一个文件来解决它。

...
else //file already existing by that name,update it's contents
{
    // Gets the media file
    MediaFileInfo updateFile = mediaFiles.FirstObject;
    updateFile.Delete(); // DELETE IT
    using (StreamReader streamReader = new StreamReader(outputFilename))
    {
        MediaFileInfo updateFile = new MediaFileInfo();
        //Set here all properties
        updateFile.FileBinaryStream = streamReader.BaseStream;
        updateFile.FileSize = streamReader.BaseStream.Length;

        // Saves the media library file
        MediaFileInfoProvider.SetMediaFileInfo(updateFile);
    }
}
本文链接:https://www.f2er.com/2715740.html

大家都在问