0

Bonjour, certaines images sont stockées en tant que BlobProperty dans Google Cloud Datastore. J'essaie de charger ces images via ajax dans mon template. Par exemple: - un utilisateur a une image et un nom. Maintenant, la zone d'image et de nom est remplie via un appel AJAX au serveur. Je ne comprends pas comment envoyer ces images au client, JSON ne supportera pas les données binaires. Cependant, googler autour me dit quelque chose appelé base 64. (Je suis tout nouveau à tout cela, alors laissez-moi admettre, je suis un noob).Utilisation de Google Cloud Datastore et AJAX (blobs) -python

Est-ce la seule façon de gérer cela ou existe-t-il une autre meilleure façon.

Répondre

1

Ce fil suggère que si vous venez de créer un élément d'image, réglez son src, et l'ajouter à votre page en utilisant Javascript, le navigateur se chargera de faire une requête HTTP pour l'image:

http://bytes.com/topic/javascript/answers/472046-using-ajax-xmlhttprequest-load-images

Si vous voulez le faire avec AJAX 'pur', alors base64 est probablement la meilleure chose: c'est une façon d'encoder des données binaires (comme des images) comme du texte, donc vous pouvez l'envoyer comme une longue chaîne dans json.

0

C'est comme ça que je le fais, c'est en flacon mais néanmoins c'est python de cette façon, vous créez un gestionnaire de requêtes pour afficher les images.

Tout ce que vous avez à faire pour obtenir l'image via ajax est d'obtenir l'identifiant de l'image. Il est plus simple et vous pouvez manipuler la taille et à la volée

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 

ce que je fais pour manipuler la taille

@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 

espoir qui aide