从应用引擎中的谷歌云存储服务图像

时间:2014-07-05 16:27:18

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

我正在编写一个谷歌应用引擎应用程序,用户将上传照片,然后我将不得不提供调整大小的照片。我花了很多时间研究什么是最好的解决方案,并决定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 。这样做的方法是什么?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我正在使用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相同。

答案 2 :(得分:1)

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

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