我使用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
但我需要一个来自给定节点的节点列表,路径和大小文件。
答案 0 :(得分:2)
我发现使用内置的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.
答案 1 :(得分:0)
我建议只检查文件系统(假设您在本地存储媒体而不是云/ CDN),而不是尝试使用数据库查找图像大小。
您只需浏览找到的/media/
即可查看哪些文件最大。
或者更好的是,下载WinDirStat之类的程序并让它来分析您的/media/
文件夹:
使用WinDirStat,您可以看到文件的可视化表示。根据我的结果,我可以看到我的最大图像被称为banner1.jpg
(媒体ID为1021)。它的大小约为700KB。
我希望这与您的需求相关。