Sitecore检查媒体库中媒体项的快速方法是图像或图片
对于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
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.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您会在回答中包含此代码吗?我认为这样做是有道理的。否则,我可以把它包括在我的。顺便说一句,这段固定代码实际上是编译并运行的:)