Google 文档视图 - URL 编码?

Posted

技术标签:

【中文标题】Google 文档视图 - URL 编码?【英文标题】:Google Docs View - URL Encoding? 【发布时间】:2011-02-13 19:48:37 【问题描述】:

我正在尝试使用 Google 文档查看器。它似乎适用于 PPT。示例:

http://docs.google.com/viewer?url=http://www.microsoft.com/presspass/download/press/2008/02-01yahoo.ppt

在我的应用程序中,为了安全起见,我将文件上传为私有文件。这似乎破坏了 Google Docs,或者我编码错误。

我发送给 Google Docs Viewer 的 URL 是这样的(示例 URL):

https://s3.amazonaws.com/dev/1/attachments/243/1/original/02-01yahoo.ppt?AWSAccessKeyId=17VVCSSS3H6Y3129H3G2&Expires=1294131584&Signature=3141havYNS7JCpsTLE6Ppo3yXkc%3D

这破坏了谷歌文档,它可以接受。我需要对此进行不同的编码吗?

谢谢!

【问题讨论】:

+1,有没有人找到任何方法来查看签名的 s3 网址?将& 编码为%26 使文件“拒绝访问”... 【参考方案1】:

您至少需要将与符号 (&) 编码为 %26

无论您使用哪种语言,都应该有一个用于 url 编码的函数。在 php 中是urlencode()。在 javascript 中,您需要使用 encodeURIComponent()

【讨论】:

【参考方案2】:

你不能。您的文档必须可公开访问,以便 Google 的服务器查看和呈现。当我尝试查看您发布的 URL 时,它给了我“拒绝访问”。

想象一下试图在您的计算机上查看 /Users/you/Desktop/mypowerpoint.ppt 的 powerpoint。由于它不是可公开访问的文件,因此您不会期望任何人都能够查看它,更不用说 Google 的服务器了。 Google 将无法访问 http://docs.google.com/viewer?url=file:///Users/you/Desktop/mypowerpoint.ppt,就像它无法访问您的访问受限页面一样。

但是,如果您提供的 URL 有一个访问密钥(我看到它是您的“示例 url”的一部分),它允许任何拥有该访问密钥的人查看它,它应该可以工作,@Mike 是对的 - - 您需要对其进行 URL 编码,以免将 Amazon 的 URL 参数与 Google Docs Viewer 的参数混淆。在这种情况下,如果你正在使用 Ruby on Rails,你的问题历史建议,你会想要使用

<%=u "http://www.yoururl.com/?someparameter=true&file=myfile.ppt" %>

【讨论】:

一开始我是这么认为的,但我认为 OP 意味着它不适用于我们。 :( 刚才在末尾添加了最后一位:P【参考方案3】:

如果您可以从 s3 php 库生成的即时 url 下载文件,您可以这样做。您所要做的就是将 google url + 编码(即时生成的文件)。

如果链接未过期,Google 视图将能够读取它。

就是这样

$generated_file = $obj->gs_prepareS3URL($file); 
$encoded_url = rawurlencode($generated_file);
$google_docs = "http://docs.google.com/viewer?url=";
redirect($google_docs.$encoded_url);

【讨论】:

以上是关于Google 文档视图 - URL 编码?的主要内容,如果未能解决你的问题,请参考以下文章

在 Google 地图上移动和显示行车摄像头视图

一页上有多个 goog_report_conversion 标记 - Google Adwords 转化跟踪

Golang:go-querystring将struct编码为URL查询参数的库

delphi URL 编码的转换

急.....中文url编码问题

google 地方文本搜索 api 没有响应