Kam*_*ran 4 sitecore sitecore7.2
更新2: 我仍在努力让服务器上的Icon保存.
我在做什么:
Item item = Sitecore.Context.Database.GetItem(imageId);
var imageIconUrl = Sitecore.Resources.Images.GetThemedImageSource(item.Appearance.Icon, ImageDimension.id32x32);
if (!string.IsNullOrEmpty(imageIconUrl))
{
// download the icon from the url
var iconFullPath = "e:\\pngIcons\\excelIcon.png";
var webClient = new System.Net.WebClient();
var downloadPath = "http://serverName/" + imageIconUrl;
webClient.DownloadFile(downloadPath, iconFullPath);
}
Run Code Online (Sandbox Code Playgroud)
该变量downloadPath包含以下字符串:
http://serverName/sitecore/shell/themes/standard/~/media/E503BA48C89B422D8400393F1C7086A7.ashx?h=32&thn=1&w=32&db=master
Run Code Online (Sandbox Code Playgroud)
最后我可以看到的是一个png文件,但它没有任何内容.我还复制了变量中的字符串downloadPath并将其粘贴到浏览器中,我可以看到如下图标:
请让我知道我做错了什么.或者我如何保存图标.谢谢!!
原始问题:
sitecore媒体项目有一个字段" Media".我在说这个:
我想访问这个字段.原因是:
如果我用例如访问它,item.GetMediaStream()那么我将获得完整的文件.我只是想在服务器上保存这个小图标.可能吗 ?
要获得可以使用的图标/缩略图
var icon = Sitecore.Resources.Media.MediaManager.GetThumbnailUrl(mediaItem);
Run Code Online (Sandbox Code Playgroud)
获取缩略图的网址.
如果您想要缩略图流,则需要使用该MediaData对象.像这样:
var mediaItem = new MediaItem(item)
var mediaData = new MediaData(mediaItem);
var iconStream = mediaData.GetThumbnailStream();
if (iconStream.Length < 0)
{
// The stream is empty, its probably a file that Sitecore can't
// generate a thumbnail for. Just use the Icon
var icon = item.Appearance.Icon;
}
Run Code Online (Sandbox Code Playgroud)
这将获得附加到媒体项的实际媒体blob的图标或缩略图.如果您只想要Sitecore项的图标,请使用Martins方法.
如果流为空,则Sitecore无法为其生成缩略图,因此您只需将图标文件用于媒体项模板即可. item.Appearance.Icon
| 归档时间: |
|
| 查看次数: |
1530 次 |
| 最近记录: |