7

我想在 Google App Engine 的沙箱中操作存储在 S3 中的腌制 python 对象。我使用 boto文档中的建议:

from boto.s3.connection import S3Connection

from boto.s3.key import Key

conn = S3Connection(config.key, config.secret_key)
bucket = conn.get_bucket('bucketname')
key = bucket.get_key("picture.jpg")
fp = open ("picture.jpg", "w")
key.get_file (fp)

但这需要我写入一个文件,这在 GAE 沙箱中显然不是洁净的。

我怎样才能解决这个问题?非常感谢您的帮助

4

2 回答 2

7

您根本不需要写入文件或 StringIO。您可以调用key.get_contents_as_string()以将密钥的内容作为字符串返回。key 的文档在这里

于 2010-10-18T09:32:11.040 回答
3

您可以写入 blob 并使用 StringIO 检索数据

from boto.s3.connection import S3Connection
from boto.s3.key import Key
from google.appengine.ext import db

class Data(db.Model)
    image = db.BlobProperty(default=None)

conn = S3Connection(config.key, config.secret_key)
bucket = conn.get_bucket('bucketname')
key = bucket.get_key("picture.jpg")
fp = StringIO.StringIO()
key.get_file(fp)

data = Data(key_name="picture.jpg")
data.image = db.Blob(fp.getvalue())
data.put()
于 2010-10-16T10:04:44.597 回答