【问题标题】:Serving images from google cloud storage in app engine在应用引擎中提供来自谷歌云存储的图像
【发布时间】:2014-07-05 16:27:18
【问题描述】:

我正在编写一个谷歌应用程序引擎应用程序,用户将在其中上传照片,然后我必须提供调整大小的照片。我花了很多时间研究什么是最好的解决方案,并决定 gcs 是要走的路。这是我的上传代码:

img_upload_url = blobstore.create_upload_url('/list', gs_bucket_name='myapp.appspot.com/'+user_name))

这可行,我可以在开发者控制台中看到正在上传的文件在 user_name 文件夹下。

这是我的服务代码,它不起作用:

gs_key = blobstore.create_gs_key('/gs/myapp.appspot.com/' + user_name + "/" + str(upload_files[0].key()))
imgSrc = images.get_serving_url(gs_key, size=385)

我在 get_serving_url 中得到 ObjectNotFoundError。有什么办法呢?

【问题讨论】:

  • 不,我正在使用 python。也许java是相似的,所以任何建议都非常感谢,因为我被阻止了几个小时。
  • 您是否能够在开发服务器数据存储中看到该对象?
  • 我可以在本地开发服务器的 blobstore 中看到该对象,但我无法提供它。

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


【解决方案1】:

我最近更新了this GIST,我在其中展示了如何使用 GAE Python 的 GCS 客户端库上传和提供文件。

在示例中,我使用默认存储桶来存储 blob。默认存储桶有免费配额。

【讨论】:

  • 很棒的教程,它解决了我的问题!此外,我没有为每个 html 上传表单调用的烦人的 blobstore.create_upload_url(),我只有一个干净的
    。我也不将图像同时存储在 blobstore 和 gcs 中,这也很好。
【解决方案2】:

键是一个对象。我想你想要upload_files[0].key.id()

【讨论】:

  • BlobKey 没有 id(方法或属性)。文档说 您可以通过将 BlobKey 值传递给内置 str() 来获取字符串形式。 。如果我尝试 images.get_serving_url(str(upload_files[0].key.id), size=385),那么它可以工作,但我猜它是从 blobstore 提供的,而不是从 gcs 提供,因为它绕过了 create_gs_key。
  • upload_files 在哪里定义?尝试记录 str(upload_files[0].key.id)gs_key 以查看它们的值
  • 我的类派生自 blobstore_handlers.BlobstoreUploadHandlerupload_files 和 upload_files = self.get_uploads()。没有key.id 也没有key.id(),所以我不能记录那个。 gs_key 只是一个(很长的)编码字符串。
  • 这可能是最终一致性的问题。编写一个单独的脚本来获取图像,并在放置后 30 秒运行它。当您尝试立即获取它时,它可能尚未放入数据存储区。
【解决方案3】:

我正在使用java,这是我正在做的,

在上传时,

bucketName = "mainBucket/subFolder/subFolder/subFolder";
objectName = "fileName";


gcsService.createOrReplace(new GcsFilename(bucketName, objectName), ....{other arguments} )

上菜时,

gsBlobkey  = createGsBlobKey("/gs/"+bucketName+"/"+objectName");
imageURl   = serveFromBlobKey(gsBlobkey);

在开发服务器数据存储中,将有一个名为 __GsFileInfo__ 的实体。其中将有一个名为fileName 的字段。确保您正在形成的网址和fileName 相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-30
    • 2012-03-03
    • 2018-05-09
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    相关资源
    最近更新 更多