如何在与Azure存储集成时构建Kentico媒体选择器以返回媒体文件GUID?

时间:2016-10-03 12:30:24

标签: azure kentico

我们有一个Kentico 9实例,其中媒体库与Azure blob存储集成。这意味着Kentico的默认媒体选择器表单控件返回Azure blob的绝对URL。但是,除了URL之外,我还需要访问媒体文件信息对象本身以获取其他属性(例如文件宽度)。

过去使用Kentico自己的文件存储时,我已经能够构建自定义媒体选择器并从返回的URL中提取媒体文件GUID。但是,与Azure存储集成时,这是不可能的。有没有人有任何想法如何在不从头开始构建我自己的媒体选择器的情况下获取文件ID或GUID?

2 个答案:

答案 0 :(得分:1)

如何使用带有UniSelector控件的自定义表单控件,您可以从azure媒体库中传递所有文件

您可以使用以下内容获取文件:

        var mediaLibrary = MediaLibraryInfoProvider.GetMediaLibraryInfo("MyAzureLibrary", "SiteName");
        var mediaFiles = MediaFileInfoProvider.GetMediaFiles()
            .Columns("FileName", "FilePath", "FileGUID")
            .WhereEquals("FileLibraryID", mediaLibrary.LibraryID);

通过这种方式你可以得到很好的"将列出特定文件夹中的所有文件的对话框,您可以设置UniSelector来存储这些文件的 GUIDS 而不是它们的路径。

这样做的缺点是你没有像在媒体库中那样获得漂亮的树视图。获得文件的GUID后,您就可以重建完整的绝对URL。

如果你想拥有树视图,你可以使用CMSTreeView控件,但它更复杂,你可能需要将它放在一个模态窗口中,这样它就不会溢出其他内容。修改内置的MediaSelector表单控件实际上不是因为它在源代码下。

答案 1 :(得分:0)

尝试启用以下设置:

内容 - >媒体 - >安全 - >检查文件权限

在这种情况下,插入的媒体URL应保留为永久URL(因为媒体处理程序需要检查权限),您应该能够像以前一样从URL中提取GUID。