【问题标题】:AppEngine: How to transfer Blobs from one app to anotherAppEngine:如何将 Blob 从一个应用程序传输到另一个应用程序
【发布时间】:2015-09-11 10:40:19
【问题描述】:

在AppEngine的Files API Service Turndown之后,现在我们不能直接create and write blob。现在如何将 Blob 从一个应用程序复制/传输到另一个应用程序?

【问题讨论】:

  • 您可以将您的 blob 上传到另一个应用程序或使用 GCS,上传示例:gist.github.com/voscausa/9222732
  • @voscausa,请将此评论转换为答案(当然不是仅链接,而是引用代码的关键部分,谢谢)。

标签: google-app-engine google-app-engine-python


【解决方案1】:

要“写入” Blob,您可以使用 Blob 上传将 Blob 发布到您的接收应用。为此,您必须使用接收应用程序的 upload_url 发布多部分编码文件。

def post_blob(url, blob_name, blob):

    CRLF = '\r\n'
    BOUNDERY = '--Th15-Is-ThE-BoUnDeRy--'

    payload = '--' + BOUNDERY + CRLF
    payload += 'Content-Disposition: form-data; name="file"; filename="%s"' \
          % blob_name + CRLF
    payload += 'Content-Type: %s' % mimetypes.guess_type(blob_name)[0] + CRLF
    payload += CRLF
    payload += blob + CRLF
    payload += '--%s--' % BOUNDERY + CRLF

    urlfetch.fetch(
        url=url,
        payload=payload,
        method=urlfetch.POST,
        deadline=40,
        follow_redirects=False,
        headers={'Content-Type': 'multipart/form-data; boundary=%s' % BOUNDERY)}
    )

url = get_receiving_app_blobstore_upload_url()  # request upload url
blob_info = blobstore.BlobInfo.get(blob_key)
blob_reader = blobstore.BlobReader(blob_key)  
post_blob(url, blob_info.filename, blob_reader.read())

在接收应用程序中,您必须创建两个处理程序:

  1. 使用blobstore.create_upload_url()请求上传网址
  2. 处理上述帖子

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多