我在 python 中使用谷歌应用引擎编写了一个简单的 webapp,它允许用户上传图像并将其存储在某个地方(现在我只是使用基于教程的 blob 商店)。
现在我想将图像发送到谷歌云存储,但不知道该怎么做。它们在打开文件时提供两种模式:“a”和“r”。据我所知,它们都不适用于二进制流。
如何将图像发送到谷歌云存储?代码片段或引用会很好。我也计划发送小型音频样本和其他二进制数据。
另外,如果用户希望删除图像,我该如何删除它?似乎没有可用的删除方法。
我在 python 中使用谷歌应用引擎编写了一个简单的 webapp,它允许用户上传图像并将其存储在某个地方(现在我只是使用基于教程的 blob 商店)。
现在我想将图像发送到谷歌云存储,但不知道该怎么做。它们在打开文件时提供两种模式:“a”和“r”。据我所知,它们都不适用于二进制流。
如何将图像发送到谷歌云存储?代码片段或引用会很好。我也计划发送小型音频样本和其他二进制数据。
另外,如果用户希望删除图像,我该如何删除它?似乎没有可用的删除方法。
这是一个简单的上传处理程序,它将写入上传到 bigstore 的 blob。请注意,您需要将应用的服务帐户添加到管理 bigstore 存储桶的团队帐户。
class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
upload_files = self.get_uploads('file')
blob_info = upload_files[0]
in_file_name = files.blobstore.get_file_name(blob_info.key())
infile = files.open(in_file_name)
out_file_name = '/gs/mybucket/' + blob_info.filename
outfile = files.gs.create(out_file_name,
mime_type = blob_info.content_type)
f = files.open(outfile, 'a')
chunkSize = 1024 * 1024
try:
data = infile.read(chunkSize)
while data:
f.write(data)
data = infile.read(chunkSize)
finally:
infile.close()
f.close()
files.finalize(outfile)