0

こんにちは、IOS アプリケーションを開発しています。JSON Web サービスも使用します。また、Python には Google App Engine も使用しています。私はPythonとGoogleアプリエンジンに本当に慣れていません。この問題がわかりません。

base64 イメージとその他の情報を json で送信しています。他の情報をデータベース(GQL)に保存し、画像のGoogleファイルフォルダー(Blob Store)に保存し、この写真のURLをGoogleデータベースの他の情報とともに保存したい.

助けてくれませんか

更新しました

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)
4

1 に答える 1

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

于 2012-10-01T23:14:06.687 に答える