我在python中使用谷歌应用引擎编写了一个简单的webapp,允许用户上传图像并将其存储在某处(现在我只是使用基于教程的blob存储)。
现在我想将图像发送到谷歌云存储,但我不知道如何做到这一点。它们在打开文件时提供两种模式:“a”和“r”。据我所知,它们都不是二进制流。
如何将图片发送到Google云端存储?代码片段或引用会很好。 我打算发送小音频样本和其他二进制数据。
另外,如果用户希望删除图像,如何删除图像?似乎没有可用的删除方法。
答案 0 :(得分:4)
这是一个简单的上传处理程序,它将编写上传到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)
答案 1 :(得分:2)