我对两周前刚开始的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进行成像,
如果有人有想法请分享,我在做错了,
非常感谢!
答案 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格式显示。