[英]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.