【问题标题】:Google app engine base64 photo save from IOS application从 IOS 应用程序保存 Google 应用引擎 base64 照片
【发布时间】:2012-10-01 21:23:47
【问题描述】:

您好,我正在开发 IOS 应用程序。我还使用 JSON Web 服务。我还使用 Google App Engine for python。我对 python 和谷歌应用引擎真的很陌生。我想不通这个问题;

我在 json 中发送 base64 图像和其他信息。我想将其他信息保存到数据库(GQL)并保存到图像谷歌文件夹(Blob 商店),并且这张照片 url 与谷歌数据库中的其他信息一起保存。

你能帮帮我吗

更新

import cgi
import datetime
import time
import urllib
import wsgiref.handlers
import os, urllib2, re, base64
import simplejson as json


from google.appengine.ext import db
from google.appengine.api import users,images, files
from google.appengine.ext import webapp
from google.appengine.ext import blobstore
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext.webapp import template
from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
import logging


class PanoMessages(db.Model):
    first_name=db.StringProperty();
    last_name=db.StringProperty();
    msg_text=db.TextProperty();
    photo_url=blobstore.BlobReferenceProperty();


class IOSDeneme(webapp.RequestHandler):
    def post(self):
        received_content = self.request.body;

        try:
            decoded_json = json.loads(received_content);

            panoMsg=PanoMessages();
            panoMsg.photo_url=save_image_to_blobstore(decoded_json["picture"],"image/png");
            panoMsg.first_name=decoded_json["first_name"];
            panoMsg.last_name=decoded_json["last_name"];
            panoMsg.msg_text=decoded_json["msg_text"];
            panoMsg.put();



            self.response.out.write(json.dumps({'StatusCode':'2', 'StatusMessage':'OK'}));

        except ValueError:

                logging.error("json-time sent data which simplejson couldn't parse")
                self.response.out.write(json.dumps({'StatusCode':'4', 'StatusMessage':'NO'}));

        def save_image_to_blobstore(base64str, mimeType):
            from google.appengine.api import files
            import binascii
            fileName1 = files.blobstore.create(mime_type=mimeType)
            with files.open(fileName1, 'a') as f:
                f.write(binascii.a2b_base64(base64str))
                files.finalize(fileName1)
            return files.blobstore.get_blob_key(fileName1)

【问题讨论】:

  • 您是否设法将图像从前端作为 JSON 后请求传递给 python?
  • 您是否考虑过将图像从应用程序直接发送到 Blobstore? Blobstore Web 服务旨在接受潜在的大量数据(例如照片上传),将照片直接发送到 Blobstore 可能更有效,一旦您知道成功,您可以使用照片元数据向您的应用发送单独的请求. developers.google.com/appengine/docs/python/blobstore/overview

标签: python ios json google-app-engine base64


【解决方案1】:

我还没有对此进行测试,但这应该采用您的 base64 字符串和图像的 mime_type 将其存储到 blobstore 中,然后返回该图像的 blob_key:

def save_image_to_blobstore(base64str, mime_type):
  from google.appengine.api import files
  import binascii
  file_name = files.blobstore.create(mime_type=mime_type)
  with files.open(file_name, 'a') as f:
    f.write(binascii.a2b_base64(base64str))
  files.finalize(file_name)
  return files.blobstore.get_blob_key(file_name)

您将使用返回的 blob 键并将其存储在一个模型中,该模型将其他信息存储在您的 JSON 对象中,如您所描述的。然后,您可以使用您想要的 URL 方案提供图像(可能基于密钥或 ID 或存储您的其他 JSON 信息的模型)。见:https://developers.google.com/appengine/docs/python/blobstore/overview#Serving_a_Blob

【讨论】:

  • 非常感谢您的回复我收到错误:(你能检查/base/data/home/apps/s~pythonilk/4.362173373789942575/pano.py:157:警告:'with'将变为Python 2.6 中的保留关键字 E 2012-10-02 11:03:20.326 : invalid syntax (pano.py, line 157) 我查看了第 157 行,我看到了这个;fileName1 = files。 blobstore.create(mime_type=mimeType)
  • 抱歉,我以为您使用的是 python 2.7。如果您使用的是 Python 2.5,请添加此导入:from __future__ import with_statement。此外,我没有看到该行有任何语法错误,您能否在您的问题中发布更多代码,以便我更好地查看?
猜你喜欢
  • 2010-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-23
  • 2013-06-19
  • 2019-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多