Tri*_*per 5 tridion tridion-content-delivery tridion-2011
当我们从tridion发布一些页面/动态组件时,可以在发布时将一些外部多媒体文件/内容(例如:jpg图像)添加到当前执行/呈现包中.因此,最终的传输包具有此二进制文件以及原创发表的内容?是否可以使用tridion渲染器/解析器的自定义?如果是,请提供一些输入.
*注意:*在发布时需要被推送到包中的二进制内容不作为多媒体组件存在于tridion中,它位于tridion CMS之外的其他文件位置.相反,我们在已发布的组件中使用了一些存根多媒体组件/页面有一些虚拟图像.我们计划在发布(渲染/解析)时将原始图像替换为原始图像.
由于我们在DAM工具中存储了大量的二进制内容,我们不希望将数据重新创建为tridion中的多媒体组件,我们希望通过查询DAM工具并将其附加到tridion包中来使用该数据,并使用一些逻辑引用计划来维护存根多媒体comp tcmid与某些映射DB中的原始内容之间的一对一映射以供参考).
如果有任何解决方案可以在发布时将外部二进制内容附加到包中,请告诉我们.
Nun*_*res 10
最好也是最简单的方法是使用Tridion为开箱即用提供的机制.创建一个新的多媒体组件,在资源类型下拉列表中选择"外部",然后键入该对象的URL.只要您可以使用URL解决它,它将完全按照您的意愿工作(项目将添加到包并发送到传递服务器).
如果这对您来说不够好,那么是的,您可以自己将其添加到包中.我在过去做过这个,代码有点像这样:
FileInfo file = // Weird logic to get a FileInfo object from external system
Item item = package.GetItem("My original Item");
item.SetAsStream(file.OpenRead());
Run Code Online (Sandbox Code Playgroud)
这用我想要的实际文件替换了原始组件的内容.如果原始组件也是多媒体组件,这将适用于您.如果不是,只需使用您自己的名称等创建一个新项目.如果可能,请使用开箱即用的流程.
PS:FileInfo类.
正如Nuno所建议的那样,最好的方法是使用具有"外部"资源类型的多媒体组件.您可能不需要手动创建这些,您可以自动使用核心服务或API程序.
我之前使用的另一种方法是在运行时创建zip文件,并使用以下代码将其添加到包中.希望它可能有所帮助.
using (MemoryStream ms = new MemoryStream())
{
zip.Save(ms);
downloadAllInOneURL = String.Format("ZipAsset{0}.zip", uniqueZipID);
downloadAllInOneURL = m_Engine.PublishingContext.RenderedItem.AddBinary(ms, downloadAllInOneURL, "", "application/zip").Url;
downloadAllInOneSize = getSize(ms.Length);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
503 次 |
| 最近记录: |