簡體   English   中英

umbraco:獲取媒體節點的媒體列表

[英]umbraco: get a list of media of a media node

我使用Umbraco 4x。

我需要一種從媒體節點及其大小獲取媒體列表的方法,以便了解如何以及在何處優化(上傳的)圖片。

由於某些上載的圖片太大,因此顯示它們會花費一些時間,因此如果我正在尋找一種優化媒體加載的方法。

我發現了一個列出媒體的小sql腳本

select cmsPropertyData.id from cmsPropertyData
inner join cmsPropertyType on cmsPropertyData.propertytypeid = cmsPropertyType.id
inner join cmsDataType on cmsPropertyType.dataTypeId = cmsDataType.nodeId
where cmsDataType.controlId = '5032a6e6-69e3-491d-bb28-cd31cd11086c' 
    and cmsPropertyData.dataNvarchar is not null

在此處輸入圖片說明

但是我寧願需要給定節點的節點列表, 路徑和文件大小

我發現使用內置的Umbraco API來獲取有關媒體的信息要容易一些。 如果您在某處使用CSHTML,這應該可以工作:

@{ 
    // Make sure to replace MEDIA_ID with the ID of your folder.
    var folder = Umbraco.TypedMedia(MEDIA_ID);
    var mediaItems = folder.Descendants();

    <table>
        <thead>
            <tr>
                <td>ID</td>
                <td>URL</td>
                <td>Size</td>
            </tr>
        </thead>
        <tbody>
            @foreach (var mediaItem in mediaItems)
            {
                <tr>
                    <td>@(mediaItem.Id)</td>
                    <td>@(mediaItem.Url)</td>
                    <td>@(mediaItem.GetPropertyValue("umbracoBytes"))</td>
                </tr>
            }
        </tbody>
    </table>
}

這將獲取您的文件夾,然后找到所有子項並將其顯示在頁面上。

或者,您可以將其重構為C#API或Surface控制器。

更新:這已經在Umbraco 7上進行了測試,因此我不確定它是否可以在Umbraco 4上使用。

我建議不要檢查數據庫,而是建議檢查文件系統(假設您將媒體存儲在本地,而不是在雲/ CDN上)。

您可以僅瀏覽/media/找到的文件,以檢查最大的文件。

或者更好的是,下載WinDirStat之類的程序並獲取它來分析/media/文件夾:

在此處輸入圖片說明

使用WinDirStat,您可以看到文件的直觀表示。 根據我的結果,我可以看到最大的圖像稱為banner1.jpg (媒體ID為1021)。 它的大小約為700KB。

我希望這與您的需求有關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM