AppEngine:如何将 Blob 从一个应用程序传输到另一个应用程序
AppEngine: How to transfer Blobs from one app to another
在 AppEngine 的 Files API Service Turndown, now we cannot directly create and write blob 之后。现在如何 copy/transfer 从一个应用程序到另一个应用程序的 Blob?
要 "write" 个 blob,您可以使用 blob 上传到 post 个 blob 到您的接收应用程序。为此,您必须使用接收应用程序的 upload_url post 多部分编码文件。
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())
在接收应用程序中,您必须创建两个处理程序:
- 请求上传 url 使用
blobstore.create_upload_url()
- 处理以上post
在 AppEngine 的 Files API Service Turndown, now we cannot directly create and write blob 之后。现在如何 copy/transfer 从一个应用程序到另一个应用程序的 Blob?
要 "write" 个 blob,您可以使用 blob 上传到 post 个 blob 到您的接收应用程序。为此,您必须使用接收应用程序的 upload_url post 多部分编码文件。
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())
在接收应用程序中,您必须创建两个处理程序:
- 请求上传 url 使用
blobstore.create_upload_url()
- 处理以上post