繁体   English   中英

在Javascript中从GAE中的数据存储访问图像

[英]Accessing images from the datastore in GAE within Javascript

我是GAE(Python)的新手,确实需要一些帮助来帮助我从数据存储服务图像并在客户端Javascript中访问图像。

我一直在这里关注Google的教程: 使用Google App Engine(Python)提供动态图片

假设我有数据对象来存储一些图像

class Default_tile(db.Model)
  name = db.StringProperty()
  image = db.BlobProperty(default=None)

将图像添加到上述数据库的正确代码是吗?:

default_tile = Default_tile()
default_tile.name = "grass"
default_tile.image = db.Blob(urlfetch.Fetch("http://www.bbc.com/grass.png").content)
default_tile.put() 

不可以说我在客户端javascript上具有以下代码:

  var image = new Image();

  image.onload = function() {
    context.drawImage(image, 69, 50);
  };
  imageObj.src = ***how to I get the image, named grass, from the Datastore***

所以我的问题是如何获得图像?

理想情况下,我只想使用imageObj.src = / images / grass

谢谢你的帮助。

数据存储

您正确地遵循了示例,但是错过了从同一URL 检索和显示图像的部分。

基本上,您将需要一个处理程序,该处理程序将定位此图像并提供服务。 在您的情况下,假设示例中的title是您的情况下的name 因此,您最终将获得一个用于检索图像的URL,如下所示:

http://localhost:8080/image?name=grass

这将提供图像,因此,如果要在客户端中使用,可以将其用作

imageObj.src = '/image?name=grass'

Blobstore API

如果您打算存储许多图像并从用户那里获取它们,则应考虑改为使用Blobstore API 对于初学者来说,它有点复杂,但是要花一些时间,因为您可以将图像(或其他任何东西)存储在便宜得多的Google Cloud Storage上。

从这个例子 ,你将能够存储和提供的斑点,但你也可以存储blob_info.key()使用该模型中的BlobKeyProperty代替, BlobProperty

有了它而不是纯粹的数据存储,您将可以利用get_serving_url()函数的优势:

返回提供图片的网址。

这种URL格式允许动态调整大小和裁剪,因此您不需要在服务器上存储不同的图像大小。 高度优化的无cookie基础结构为图像提供了低延迟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM