के माध्यम से ब्लॉबस्टोर छवि की सेवा करना मैं एक ऐप-इंजन एंडपॉइंट एपीआई बना रहा हूं जो उपयोगकर्ता (एंड्रॉइड ऐप) से चित्र लेता है और इसे प्रोग्रामेटिक रूप से ब्लॉबस्टोर में सहेजता है। फिर मैं अपने डेटास्टोर में blob_key को बचाता हूं। कोड इस प्रकार है:ऐप-इंजन एंडपॉइंट्स एपीआई
सबसे पहले मैं के माध्यम से अपने
@endpoint.method
एकmessages.BytesField
के रूप में छवि प्राप्त किया:image_data = messages.BytesField (1, आवश्यक = सच)
तब मैं इस तरह ब्लॉबस्टोर में सहेजें:
from google.appengine.api import files
def save_image(data):
# Create the file
file_name = files.blobstore.create(mime_type='image/png')
# Open the file and write to it
with files.open(file_name, 'a') as f:
f.write('data')
# Finalize the file. Do this before attempting to read it.
files.finalize(file_name)
# Get the file's blob key
blob_key = files.blobstore.get_blob_key(file_name)
return blob_key # which is then saved to datastore
अब मैं छवि की सेवा करना चाहता हूं वापस। मैं नहीं दिख रहा है कि मेरे अंतिम बिंदु API में निम्न कोड फिट करने के लिए:
from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
def get(self, resource):
resource = str(urllib.unquote(resource))
blob_info = blobstore.BlobInfo.get(resource)
self.send_blob(blob_info)
अंत मैं इस तरह एक सेवारत प्रक्रिया की कल्पना में:
- @ endpoints.method में
:
प्राप्त blob_key डेटास्टोर से
blob_key साथ छवि प्राप्त
सामने के अंत (Android एप्लिकेशन)
मेरे दृष्टिकोण है क्योंकि मैं अपने उपयोगकर्ताओं की गोपनीयता की रक्षा करना चाहते हैं के लिए भेजें StuffResponseMessage StuffResponseMessage
में चित्र जोड़ी। यह कैसे अच्छी तरह से करने के बारे में कोई विचार? My code snippets are generally from the google developer tutorial।
संपादित करें:
मैं नहीं दिख रहा है कि कैसे मैं छवि को पुनः प्राप्त करने के लिए निम्न विधि को डेटास्टोर से blob_key पारित होगा:
from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
def get(self, resource):
resource = str(urllib.unquote(resource))
blob_info = blobstore.BlobInfo.get(resource)
self.send_blob(blob_info)
क्या अंदर resource
है, वैसे?
यदि आप पाइथन 2.7 का उपयोग कर रहे हैं तो आपको __future__ आयात से _statement' की आवश्यकता नहीं है। – bossylobster
आह। धन्यवाद, @ बॉसिलोबस्टर। मैंने इसे बाहर निकाला – learner