微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将图片从url上传到Blobstore?

如何解决如何将图片从url上传到Blobstore?

| 如果blobstore blob,则Google App Engine文件API现在支持以编程方式创建。 我通过尝试通过http提取图像并将其存储到blobstore来解决此问题:
    file_name = files.blobstore.create(mime_type=\'image/jpeg\')
    image = urllib2.urlopen(url)
    with files.open(file_name,\'a\') as f:
        f.write(image)  # LINE 142

    files.finalize(file_name)   
    blob_key = files.blobstore.get_blob_key(file_name) 
这段代码抛出错误
  File \"/Users/willmerydith/repos/spam/admin.py\",line 142,in post
    f.write(image)
  File \"/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/files/file.py\",line 364,in write
    self._make_rpc_call_with_retry(\'Append\',request,response)
  File \"/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/files/file.py\",line 472,in _make_rpc_call_with_retry
    _make_call(method,line 229,in _make_call
    rpc.check_success()
  File \"/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/apiproxy_stub_map.py\",line 558,in check_success
    self.__rpc.CheckSuccess()
  File \"/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/apiproxy_rpc.py\",line 156,in _WaitImpl
    self.request,self.response)
  File \"/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/apiproxy_stub.py\",line 80,in MakeSyncCall
    if request.ByteSize() > self.__max_request_size:
  File \"/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/files/file_service_pb.py\",line 1923,in ByteSize
    n += self.lengthString(len(self.data_))
AttributeError: addinfourl instance has no attribute \'__len__\'
我怀疑它正在破裂,因为我超出了尺寸限制。那是由于我将图像写入Blobstore的方式吗? Blobstore的大小限制为2 GB,我正在测试的图像小于200-300 KB。     

解决方法

urllib2.urlopen
返回
urllib2.addinourl
对象,而不是字符串。您不能将此对象直接写入文件对象。 在第142行尝试
f.write(image.read())
。     ,由于档案API已于2015年9月停用,因此无法再使用。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?