2017-07-17 54 views
1

我试图显示存储在iframe中的S3存储桶中的.doc文件,这要感谢google doc viewer api。谷歌文档查看器不适用于亚马逊s3签名的网址

我已经做了一些研究,发现this,我想在这里适用:

var encodedUrl = encodeURIComponent("http://myAPI.com/1d293950-67b2-11e7-8530-318c83fb9802/example.docx?X-Amz-Algorithm=AWS4-HMAC-SHA256%26X-Amz-Credential=GNRO0BLDYAJP1FU7ALIS%2F20170717%2Fus-east-1%2Fs3%2Faws4_request%26X-Amz-Date=20170717T145429Z%26X-Amz-Expires=600%26X-Amz-SignedHeaders=host%26X-Amz-Signature=ee556c5c92427bb38265507218a701660936bc2774ecc919648bb2d780a2619f"); 

$scope.selectedSource = $sce.trustAsResourceUrl(
    "http://docs.google.com/gview?url=" + encodedUrl + "&embedded=true" 
); 

的iFrame的样子:

<iframe ng-src="{{selectedSource}}" frameborder="no" style="width:100%;height:100%"></iframe> 

但是我还是从一个“无预览可用”浏览器里面的iframe,任何想法为什么?

我指定签名的url(未编码)在我将其粘贴到浏览器中时起作用,因此我拥有所需的所有权限。

+0

这工作我利用S3预先签署网址,打开一个新的浏览器选项卡,然后去一个稍微不同的URL私人文档:'的https://文档.google.com/viewer?url ='+冗余网址编码(这在技术上是你在做什么,看起来是正确的)预先签署的S3 URL(签名版本4)。替代Google网址被发现[在这里](https://webapps.stackexchange.com/q/44673/83083)。在尝试嵌入它之前,您可能想在自己的窗口中测试它,以消除变量。 –

回答