当前位置: 首页 > 知识库问答 >
问题:

从IOS应用程序保存Google应用程序引擎base64照片

蒋栋
2023-03-14

嗨,我正在开发IOS应用程序。我还使用JSON web服务。我还使用Google App Engine for python。我对python和google应用程序引擎真的是个新手。我想不出这个问题;

我在json中发送bas64图像和其他信息。我想保存其他信息到数据库(GQL),并保存到图像谷歌文件夹(Blob商店),这张照片网址保存在谷歌数据库的其他信息。

你能帮帮我吗

更新

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)

共有1个答案

段干弘毅
2023-03-14

我还没有对此进行测试,但这应该接收图像的base64字符串和mime_类型以将其存储到blobstore中,然后返回该图像的blob_键:

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

 类似资料:
  • 我正在将一个非常基本的web应用程序部署到Google应用程序引擎。我使用的是Springboot,我可以在本地很好地运行应用程序,但当我部署到Google时,应用程序引擎不会启动实例。我在启动时配置了一个云SQL数据源。 我有云sql配置属性配置src/main/Resources/application.properties.App Engine似乎找不到这些属性,所以它无法正确设置Cloud

  • 在python上的GoogleAppEngine中,我遇到了以下错误:在服务了总共2个请求后,超过了128 MB的软私有内存限制,达到了157 MB。我尝试使用以下命令来解决这个问题。上下文=ndb。获取上下文()和上下文。设置缓存策略(False)。我把这个方法放在appengine\u配置中。py,也在应该处理请求的处理程序中。我想知道是否还有其他地方可以放置这个命令,或者我是否应该总共使用一

  • 我正在上传。要存储的java servlet。jpg至地面军事系统。 我使用GCS客户端库而不是Google云存储API。但我没有找到任何上传照片的示例(doPost方法),所以我的代码不起作用。。。 发送成功(我可以在GCS上看到大小为465.24KB的照片),但当我尝试查看这张照片时,我无法: 这是我的代码: 上载java servlet public void doPost(HttpServ

  • 是否有针对Google App Engine(Java base)的报告指南?Jasper Report是否符合GAE?

  • 我看到了这个Python问题:应用引擎延迟:跟踪内存泄漏 ...同样,我也遇到了这个可怕的错误: 在为总共384个请求提供服务后,超过了128 MB的软专用内存限制 ... 处理此请求后,发现处理此请求的进程占用了太多内存,因此被终止。这可能会导致应用程序的下一个请求使用新进程。如果经常看到此消息,则应用程序中可能存在内存泄漏。 根据另一个问题,可能是“实例类”太小,无法运行这个应用程序,但是在增

  • 我有一个导入jar的app引擎app。在那个罐子里,我用的是GoogleClientSecrets。load()以加载client\u机密。用于使用BigQuery进行身份验证的json文件。显然,当我在localhost上部署应用程序时,应用程序引擎不喜欢我从磁盘上的某个位置读取文件。我假设,如果我把凭据放在WEBINF文件夹中,它会工作,但还没有测试,但这样任何人都可以轻松访问该文件。哪里是放