Birt - 在报告中使用Amazon Javascript SDK

时间:2015-08-17 11:04:24

标签: birt

我对两周前刚开始的​​Birt很新,我在论坛中找不到任何相关主题,所以我发布一个新主题,如果问题已经讨论过,请分享参考,

我有一些存储在Amazon S3存储桶中的图像文件,它使用安全的URL,所以我不能简单地嵌入它们,它说访问被拒绝,为此我必须使用AWS Javascript SDK whcih允许我传递Sceret和Access密钥和我想要访问的文件以获取预签名的URL,我可以在任何地方使用它来获取该文件,

到目前为止一切都很好,

现在我想进行身份验证并在报告中获取预先签名的URL,因为我必须在报告中包含此sdk javascipt aws-sdk-2.1.45.min.js文件,这就是我被困住的地方,< / p>

我尝试使用报告资源

添加javascript sdk

但报告甚至没有运行可能是其他一些javascript conflcts,我得到了错误

然后我尝试使用Text元素

添加这个JS

现在sdk已包含在报告中

但是当我尝试使用javascript代码时

它给出了AWS undefined的错误,

我也尝试过使用report的clientScript部分head.js(),这里一切正常,但如何在报告中访问我认证后得到的对象

AWS.config.update({accessKeyId: 'xxxxx', secretAccessKey: 'xxxxxxxxxxx'});

AWS.config.region = 'eu-west-1';

var s3 = new AWS.S3();

所以我可以将图像安全url(在数据库中)传递给s3对象并使用此身份验证对象获取公共URL 然后将其设置为对URL进行成像,

如果有人有想法请分享,我在做错了,

非常感谢!

1 个答案:

答案 0 :(得分:1)

您可能想要使用AWS sdk for java,而不是javascript。下载它,将aws-java-sdk-1.10.11.jar及其依赖项添加到报告的jar资源或类路径中。这样,您就可以在所有常规BIRT表达式中调用AWS api,即使在数据集的计算列中也是如此。

importPackage(Packages.com.amazonaws.services.s3);
var s3=new AmazonS3Client();

但是,到目前为止,您使用了javascript API,从客户端角度调用AWS,并且无法在服务器端处理结果。以HTML格式显示图像仍然是可能的(但很痛苦),但不能以PDF和Office格式显示。