由于某些原因,我手头有一个备份网站的项目。我在Python中使用请求来抓取内容和图像(url)。问题是,我如何保存图像在云中,通过使用该图像的url,在云服务(谷歌驱动器,Dropbox等)。
我知道有一种方法可以先将图像保存在本地,然后将本地图像上传到云。但我想知道是否有api支持通过url上传图像,而不是本地文件。
似乎Dropbox有一个叫做/save_url
的功能
允许应用程序开发人员通过提供URL将文件上传到Dropbox,而无需先下载文件。
https://www.dropbox.com/developers-v1/core/docs save-url
如果您不介意支付存储费用,您可以将其保存到您自己的云存储中。我偶尔需要做一个类似的操作,并像这样处理它:
def on_upload_image(self):
url = self.request.get('url')
result = urlfetch.fetch(url)
binary = result.content
blob_key = functions.get_blob_key_by_data(binary)
self.url = images.get_serving_url(blob_key, secure_url=True)
self.json()
from google.appengine.api import app_identity
def get_blob_key_by_data(data):
bucket = app_identity.get_default_gcs_bucket_name()
filename = hashlib.sha256(data).hexdigest()
mime_type = get_mime_type(data)
if not mime_type:
return None
gcs_filename = '/%s/image_%s' % (bucket, filename)
with gcs.open(gcs_filename, 'w', content_type=mime_type) as f:
f.write(data)
blob_key = blobstore.create_gs_key("/gs" + gcs_filename)
return blob_key