【问题标题】:Sending images to google cloud storage using google app engine使用谷歌应用引擎将图像发送到谷歌云存储
【发布时间】:2012-03-03 12:15:18
【问题描述】:

我在 python 中使用谷歌应用引擎编写了一个简单的 webapp,它允许用户上传图像并将其存储在某个地方(现在我只是使用基于教程的 blob 商店)。

现在我想将图像发送到谷歌云存储,但不知道该怎么做。它们在打开文件时提供两种模式:“a”和“r”。据我所知,它们都不适用于二进制流。

如何将图像发送到谷歌云存储?代码 sn-ps 或引用会很好。 我还计划发送小型音频样本和其他二进制数据。

另外,如果用户希望删除该图像,我该如何删除它?似乎没有可用的删除方法。

【问题讨论】:

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


    【解决方案1】:

    这是一个简单的上传处理程序,它将写入上传到 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)
    

    【讨论】:

    • 感谢 sn-p。如果我使用这种方法,我还会使用 blobstore 吗?
    • 是的,在此示例中,上传进入 blobstore 1st。
    【解决方案2】:

    云存储中的二进制流和文本流没有区别。您只需将字符串(或字节字符串)写入以"a" 模式打开的文件。按照说明here

    此外,如果您从 blobstore 提供图像,则最好使用来自 hereget_serving_url(),尽管这取决于您的应用程序。

    【讨论】:

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