我使用我在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";
}
答案 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属性只包含原始上传的路径和文件名。