从Razor Template获取二进制文件的全名,包括扩展名

时间:2013-02-27 21:29:36

标签: tridion

我使用我在SO(here)上找到的技术从Razor模板发布二进制文件。除了一个小缺点外,它的效果很好。

我想推送一个带有上传到Tridion的文件名的项目。我可以使用大部分标题,但如何确定文件扩展名?在这种情况下,我需要知道模板中文件的名称,因为我将使用它进行一些javascript操作。

同样,一切正常,但除了连接" .jpg"之外我还想做点什么。看起来我可以解析WebDavUrl属性。这是我唯一的选择吗?

@{ 
  var item1 = TridionHelper.Package.CreateMultimediaItem(@Fields.closed.ID);
  TridionHelper.Package.PushItem(@Fields.closed.Title + ".jpg", item1);

  string closed = @Publication.MultimediaUrl + "/"+(@Fields.closed.Title) + ".jpg";

}

1 个答案:

答案 0 :(得分:6)

您可以从Razor Mediator完全访问TOM.NET API,因此您还可以从Component的BinaryContent字段访问文件名。假设@ Fields.closed是一个多媒体组件链接,你可以这样做:

@Fields.closed.TridionObject.BinaryContent.Filename

请注意,这将是上传的原始路径/文件名。您还可以访问System.IO.Path,因此您可以:

@System.IO.Path.GetFileName(Fields.closed.TridionObject.BinaryContent.Filename)
@System.IO.Path.GetExtension(Fields.closed.TridionObject.BinaryContent.Filename)
@System.IO.Path.GetFileNameWithoutExtensions(Fields.closed.TridionObject.BinaryContent.Filename)

如果你有一个发布二进制文件的自定义TBB,你必须要小心,因为这个TBB实际上可以改变发布的文件名,而BinaryContent的Filename属性只包含原始上传的路径和文件名。