如果URL没有以文件扩展名结尾,我们如何使用外部资源类型保存多媒体组件?

时间:2013-02-19 19:11:27

标签: tridion tridion-2011

我们有一个与策展内容相关的Tridion用例,我们正在为与我们的内容相关联的图像创建多媒体组件,这些图像指向外部资源类型而不是上传的资源类型。

我们在这个用例中遇到的一个问题是,尽管明确设置了资源的多媒体类型,但如果图像的URL中包含查询字符串:http://cdn.hw.net/UploadService/1c8b7f28-bb12-4e02-b888-388fdff5836e.jpg?w=160&h=120&mode=crop&404=default或使用'友好的网址':http://www.somewhere.com/images/myimage/当我们保存组件时,Tridion barfs的错误消息类似于:'属性'Filename'的值无效。意外的文件扩展名:jpg?w = 160& h = 120& mode = crop& 404 = default。期待:jpg,jpeg,jpe。'

到目前为止,我们能够找到可能解决这个问题的唯一方法是做一些hacky,比如在url的最末端附加一个额外的查询字符串参数,该文件以预期的文件扩展名结尾: http://cdn.hw.net/UploadService/1c8b7f28-bb12-4e02-b888-388fdff5836e.jpg?w=160&h=120&mode=crop&404=default&ext=.jpg显然,这不是最好的解决方案,事实上,如果他们所服务的网站严格验证所请求的网址,某些图片可能无效。

有没有人对我们如何解决这个问题有任何想法?

2 个答案:

答案 0 :(得分:9)

不幸的是我无法想到一个简单的解决方案,因为Tridion通过检查文件扩展名来“检测”Mime类型。

您可以在保存时添加它并在阅读时删除它(通过事件系统)?肯定是一个有价值的增强请求,据我所知,这个行为在即将到来的Tridion 2013中没有改变...... 见下面的评论,它已经改变了2013年。

答案 1 :(得分:8)

+1 Nuno的回答。认识到问题的标题是针对多媒体组件的,您可能需要考虑另一种方法,即使用普通组件,而不是多媒体组件。您可以创建一个名为“外部图像”的普通组件模式,该模式具有外部URL字段以存储您的无扩展URL。

然后,内容作者将通过Tridion GUI中的常规组件链接机制包含这些图像。

然后,您需要一个自定义链接解析器TBB,它将解析输出项目(通过Regex)查找任何Tridion锚标记<a tridion:href="tcm:x-y-z">,并为每个标记替换它们的<img src=...>标记,其中src路径将来自此链接组件。

有关类似方法的示例,但有视频和自定义链接解析程序TBB的示例代码,请查看以下帖子中的代码:http://www.tridiondeveloper.com/integration-sdl-tridion-jw-media-player