我正在尝试从图片网址创建blob,但我无法弄清楚如何做到这一点。
我已经阅读了谷歌关于创建blob的文档,但它只讨论了从表单创建blob并使用blobstore.create_upload_url('/upload_photo').
我在那里读了一些问题,但我找不到任何可以帮助我的东西。
我的应用程序有一个图像URL列表,我想将这些图像保存到blobstore中,以便我可以在之后为它们提供服务。我认为blobstore是解决方案,但如果有更好的方法,请告诉我!
修改 我正在尝试使用谷歌云存储:
class Upload(webapp2.RequestHandler):
def get(self):
self.response.write('Upload blob from url')
url = 'https://500px.com/photo/163151085/evening-light-by-jack-resci'
url_preview = 'https://drscdn.500px.org/photo/163151085/q%3D50_w%3D140_h%3D140/d3b8d92296f9381a91f6d41b1c607c92?v=3'
result = urlfetch.fetch(url_preview)
if result.status_code == 200:
doSomethingWithResult(result.content)
self.response.write(url_preview)
def doSomethingWithResult(content):
gcs_file_name = '/%s/%s' % ('provajack-1993', 'prova.jpg')
content_type = mimetypes.guess_type('prova.jpg')[0]
with cloudstorage.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))
(在stackoverflow中找到)但是这段代码给了我一个错误:
*File "/base/data/home/apps/e~places-1993/1.394547465865256081/main.py", line 54, in doSomethingWithResult
with cloudstorage.open(gcs_file_name, 'w', content_type=content_type, options={b'x-goog-acl': b'public-read'}) as f:
AttributeError: 'module' object has no attribute 'open'*
我无法理解为什么。我必须在云存储中设置一些内容吗?
答案 0 :(得分:0)
cloudstorage.open()
显然存在,因此错误可能表示您的环境中存在某些库/命名冲突。
此帖子中描述了调试此类冲突的方法:google-cloud-sdk - Fatal errors on both update and attempted reinstall Mac OSX 10.7.5