Sitecore检查媒体库中媒体项的快速方法是图像或图片

Sitecore检查媒体库中媒体项的快速方法是图像或图片,sitecore,sitecore7.2,Sitecore,Sitecore7.2,对于Sitecore“媒体库”中的项目: MediaItem mediaItem = Sitecore.Context.Database.GetItem("{E47591D0-48D2-4543-80E4-3836B02AA1A8}"); 上面的项目是一张图片“Tulips.jpg” 如何从代码隐藏中检查上述项目是否为图片/图像?一旦您拥有了MediaItem对象,您可以执行以下操作: MediaItem MediaItem=。。。 bool isPicture=mediatem.Mime

对于Sitecore“媒体库”中的项目:

MediaItem mediaItem = Sitecore.Context.Database.GetItem("{E47591D0-48D2-4543-80E4-3836B02AA1A8}");  
上面的项目是一张图片“Tulips.jpg”


如何从代码隐藏中检查上述项目是否为图片/图像?

一旦您拥有了
MediaItem
对象,您可以执行以下操作:

MediaItem MediaItem=。。。
bool isPicture=mediatem.MimeType.StartsWith(“image/”);
这是因为图像是这样形成的:
image/…
。例如:

  • 图像/bmp
  • 图像/gif
  • 图像/jpeg

Sitecore在Sitecore项目类上有一个助手IsMediaItem

Sitecore.Context.Item.Paths.IsMediaItem
此代码检查项目是否具有包含“sitecore/Media library”的路径


您可以在将项目转换为媒体项目之前检查该项目

Dmytro Shevchenko建议的替代方法是使用Sitecore的API检查包含图像的
MediaItem
模板,而不是进行字符串比较

将图像上载到
媒体库
时,它存储在
版本化
未版本化
模板和
图像
jpeg

因此,要检查
mediaItem
是否为图像,可以执行以下操作:

public-ID-ImageUnversioned=new-ID({F1828A2C-7E5D-4BBD-98CA-320474871548});
公共ID JpegUnversioned=新ID({DAF085E8-602E-43A6-8299-038FF171349F});
公共ID ImageVersioned=新ID({C97BA923-8009-4858-BDD5-D8BE5FCCECF7});
公共ID JpegVersioned=新ID({EB3FB96C-D56B-4AC9-97F8-F07B24B9BF7});
公共布尔IsImage(项目mediaItem)
{
返回mediaItem.TemplateID.Equals(ImageUnversioned)
||mediaItem.TemplateID.Equals(JpegUnversioned)
||mediaItem.TemplateID.Equals(ImageVersioned)
||mediaItem.TemplateID.Equals(JPEG版本);
}
然后只需输入
mediaItem
,如下所示

bool-isimagerpicture=IsImage(mediaItem);
更新 当
Jpeg
模板从
图像
模板下降时,非常注意递归检查项目的所有基本模板。实施如下:

使用Sitecore;
使用Sitecore.Data.Items;
...
公共静态布尔IsImage(项目)
{
如果(item.TemplateID==TemplateID.VersionedImage
||item.TemplateID==TemplateID.UnversionedImage)
{
返回true;
}
foreach(item.Template.BaseTemplates中的TemplateItem baseTemplate)
{
if(IsImage(基本模板))
{
返回true;
}
}
返回false;
}

我想Kami想知道媒体项是否是图像。问题是,可以上传其他类型的媒体项目,如视频、PDF和音频文件。啊,是的,如果是这样的话,那么你的答案就行了。我的只检查它的路径是否包含媒体库。这是一个很好的方法!顺便说一下,jpeg模板是从图像模板派生而来的。请记住,将来可能会有其他图像派生模板,我建议使用这种(更通用的)实现:如果您愿意,您可以重用此代码作为答案。我非常喜欢+1您会在回答中包含此代码吗?我认为这样做是有道理的。否则,我可以把它包括在我的。顺便说一句,这段固定代码实际上是编译并运行的:)