使用python

时间:2016-07-29 12:05:29

标签: python python-2.7 google-app-engine blobstore google-cloud-datastore

我正在尝试从图片网址创建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'*

我无法理解为什么。我必须在云存储中设置一些内容吗?

1 个答案:

答案 0 :(得分:0)

cloudstorage.open()显然存在,因此错误可能表示您的环境中存在某些库/命名冲突。

此帖子中描述了调试此类冲突的方法:google-cloud-sdk - Fatal errors on both update and attempted reinstall Mac OSX 10.7.5