2013-02-27 24 views
3

我正在使用我在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"; 

} 

回答

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屬性將僅包含原始上傳的路徑和文件名。

+0

感謝您的回答! – 2013-02-28 14:29:34