Вопрос

Привет, у меня есть некоторые изображения, хранящиеся как BlobProperty в Google Cloud DataStore. Я пытаюсь загрузить эти изображения через Ajax в мой шаблон. Для EG: - У пользователя есть изображение и имя. Теперь область изображения и имени заполняются через AJAX получить звонок на сервер. Я не понимаю, как я отправить эти изображения клиенту, JSON Wont поддерживает двоичные данные. Однако гуглинг вокруг говорит мне о чем-то под названном базе 64. (Я вполне новый, чтобы все это, так что позвольте мне признать, я нуб).

Это единственный способ справиться с этим или есть еще один лучший способ.

Это было полезно?

Решение

Эта тема предполагает, что если вы просто создаете элемент изображения, установите его SRC и добавьте его на страницу с помощью JavaScript, браузер позаботится о том, чтобы сделать HTTP-запрос для изображения:

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

Если вы хотите сделать это с «чистым» ajax, то Base64, вероятно, лучшее: это способ кодирования двоичных данных (таких как изображения) в виде текста, поэтому вы можете отправить его как длинную строку в JSON.

Другие советы

Вот как я это делаю, это в колбе, но, тем не менее, это Python таким образом, вы создаете обработчик запроса для отображения изображений.

Таким образом, все, что вам нужно сделать, чтобы получить изображение через AJAX, получает удостоверение личности изображения. Это проще, и вы можете манипулировать размером, а также на лету

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

Это то, что я делаю, чтобы манипулировать размером

@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

надеюсь, это поможет

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top