3

SO ( here ) で見つけた手法を使用して、Razor テンプレートからバイナリを公開しています。1 つの小さな欠点を除けば、うまく機能します。

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 に答える