使用谷歌应用引擎python将图像从外部链接上传到谷歌云存储

Rob*_*Rob 5 python google-app-engine google-cloud-storage

我正在寻找一个解决方案,如何http://example.com/image.jpg使用appengine python 从外部网址上传图片,如谷歌云存储,

我现在正在使用

blobstore.create_upload_url('/uploadSuccess', gs_bucket_name=bucketPath)
Run Code Online (Sandbox Code Playgroud)

对于想要从他们的计算机上传图片的用户,请致电

images.get_serving_url(gsk,size=180,crop=True)
Run Code Online (Sandbox Code Playgroud)

在uploadSuccess上并将其存储为他们的个人资料图片.我试图允许用户在使用oauth2登录后使用他们的脸书或谷歌个人资料图片.我可以访问他们的个人资料图片链接,我只想复制它以保持一致性.皮斯帮助:)

vos*_*usa 13

要上传外部图像,您必须获取并保存.要获取图像,您可以使用此代码:

from google.appengine.api import urlfetch

file_name = 'image.jpg'
url = 'http://example.com/%s' % file_name
result = urlfetch.fetch(url)
if result.status_code == 200:
    doSomethingWithResult(result.content)
Run Code Online (Sandbox Code Playgroud)

要保存图像,您可以使用此处显示的应用引擎GCS客户端代码

import cloudstorage as gcs
import mimetypes

doSomethingWithResult(content):

    gcs_file_name = '/%s/%s' % ('bucket_name', file_name)
    content_type = mimetypes.guess_type(file_name)[0]
    with gcs.open(gcs_file_name, 'w', content_type=content_type,
                  options={b'x-goog-acl': b'public-read'}) as f:
        f.write(content)

    return images.get_serving_url(blobstore.create_gs_key('/gs' + gcs_file_name))
Run Code Online (Sandbox Code Playgroud)