Domanda

Ciao ho alcune immagini memorizzate come BlobProperty in Google Cloud Datastore. Sto cercando di caricare queste immagini tramite la tecnologia AJAX nel mio modello. Per esempio: - un utente ha un'immagine e un nome. Ora l'area immagine e il nome viene popolata tramite un get chiamata AJAX al server. Non sto capire come mando queste immagini al cliente, JSON wont supporta dati binari. Tuttavia googling intorno a me dice di una cosa chiamata di base 64. (io sono abbastanza nuovo a tutto questo, per cui vorrei ammetto, io sono un noob).

E 'questo l'unico modo per gestire questo o c'è qualche altro modo migliore.

È stato utile?

Soluzione

Questo thread suggerisce che se si crea un elemento di immagine, impostare il suo src, e aggiungerlo alla tua pagina utilizzando Javascript, il browser si occuperà di fare una richiesta HTTP per l'immagine:

http://bytes.com/topic/ javascript / risposte / 472.046-con-ajax-XMLHttpRequest-load-immagini

Se si vuole farlo con 'puro' AJAX, allora base64 è probabilmente la cosa migliore: è un modo di codificare dati binari (come le immagini) come testo, in modo da poter inviare come una lunga serie in JSON.

Altri suggerimenti

Questo è come lo faccio, è nel pallone ma comunque di pitone in questo modo, si crea un gestore di richiesta per visualizzare le immagini.

Quindi, tutto quello che dovete fare per ottenere l'immagine tramite la tecnologia AJAX sta ottenendo l'id immagine per essere servito. È più semplice e si può manipolare la dimensione così al volo

from flask import request

from google.appengine.api import taskqueue, images, mail
from google.appengine.ext import db

    @app.route('/image/<img_id>')
    def imgshow(img_id):
      imageuse = Image.all().filter("image_id =", img_id).get()
      if imageuse:
        response = Response(response=imageuse.content)
        #you can use any type over here
        response.headers['Content-Type']='image/png'
        return response
      else:
        return

questo è quello che faccio per manipolare la dimensione

@app.route('/thumb/<img_id>')
def thumbshow(img_id):
  imageuse = Image.all().filter("image_id =", img_id).get()
  if imageuse:
    thbimg = images.resize(imageuse.content, 80)
    response = Response(thbimg)
    response.headers['Content-Type']='image/png'
    return response
  else:
    return

speranza che aiuta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top