3

我正在使用我在 SO(此处)上找到的一种技术从 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";

}
4

1 回答 1

6

您可以从 Razor Mediator 完全访问 TOM.NET API,因此您还可以从组件的 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 属性将仅包含原始上传的路径和文件名。

于 2013-02-28T00:04:59.967 回答