云存储 - 可以通过API检索对象,但在尝试访问MediaLink时会出现奇怪的错误

时间:2014-06-07 03:54:12

标签: google-app-engine go google-cloud-storage

我在appengine上使用golang(go go version1.2.1(appengine-1.9.3)linux / 386)

我的新应用在尝试阅读云存储文件的内容时遇到了麻烦。我可以通过google-api-go-client获取对象信息,MediaLink为我提供了这样的网址:

https://www.googleapis.com/storage/v1beta2/b/bucket/o/profile%2Fpath_to_the_file.jpeg?generation=1402107955298000&alt=media

在dev_app_server或appengine上,当我尝试urlfetch这个jpeg时,我得到了#34; 404 Not Found"。当我将相同的网址粘贴到我的浏览器中时,我会获得307重定向,然后获得200个新网址,看起来像这样:

https://storage.googleapis.com/bucket/profile%2Fpath_to_the_file.jpeg?generation=1402107955298000

我尝试了一项测试,只是首先对www.googleapis.com网址提出了urlfetch请求,然后是storage.googleapis.com网址。第一个URL给出404,但第二个URL给出200 OK。我在另一个应用程序中使用了几乎相同的代码 - 为什么我在这个实例中得到错误的404?

谢谢, 添

1 个答案:

答案 0 :(得分:1)

显然这是golang如何解析URL字符串并将其转换为net / url结构的问题。您可以使用URL.Opaque字段来解决此问题。我没有写这段代码,但这里有一个例子,说明googleapi如何处理同样的问题,以便在路径中保留%2F分隔符。

http://play.golang.org/p/TkKRROJTfb