2016-10-02 86 views
0

嗨我已经查看了相关的问题,但一直没有找到答案。我想在我的网站上提供谷歌云存储的公共链接,但它们仅作为下载链接提供。我无法将它们作为img src加载它们。由于CORS,我无法从我的网页js下载图像异步。有没有解决方法?我想知道我是否可以最初将它们异步定义为下载链接,并强制onclick下载它们,然后使用文件读取器获取blob以用作img src。谷歌云存储图像公共链接到img src

更新:我发现有一个Chromium问题。我在CORS_Everywhere中使用了Firefox,并且请求起作用。一旦我的网站正式运行,我的图像是否也有相同的问题?或者说CORS只是不接受本地主机? OR依赖于浏览器吗?

感谢, timecatcher

回答

1

我不是很确定你想要做什么。这听起来像是你想要在源代码位于GCS中的<img>标记中显示图像。你不应该需要任何CORS策略或Javascript欺骗,所以我可能会误解你的问题。

要在网站上包含GCS图像,请确保图像是公开可见的,然后只包含一个像这样的图像标签:<img src="https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME" />

编辑与评论答案:

如果您上传的对象,而不指定内容类型,GCS默认为一个通用的“应用程序/八位字节流”。网页浏览器通常默认为保存application/octet-stream响应。确保JPEG图像具有Content-Type“image/jpeg”,如果您想通过网络提供它们。

+0

嗨布兰登,我希望那样容易。从我的云存储帐户创建的所有链接都是媒体可下载的链接,而不是人们期望的img src链接。 以下是一个示例链接: http://storage.googleapis.com/santex-1101.appspot.com/libertyCotton2.jpg – timecatcher

+0

啊!你有一个不同的问题。 GCS不会对正在上传的对象的内容类型作出假设,并且此特定对象具有“application/octet-stream”的默认内容类型。 Web浏览器不知道如何渲染,所以他们下载它。将对象的contentType更改为“image/jpeg”,它应该可以正常工作。 –