Включение динамического изображения на веб-страницу с помощью POST?

StackOverflow https://stackoverflow.com/questions/243375

Вопрос

Я написал CGI-скрипт, который создает изображение динамически, используя GET data.Чтобы включить это изображение на свою веб-страницу, я использую следующий код:

<img src="image.py?text=xxxxxxxxxxxxxx">

Проблема в том, что я ожидаю, что в будущем поле "текст" станет очень длинным, а URL-адрес - слишком большим.Из поиска в Google, похоже, не существует фиксированного ограничения на длину URL (т. Е.зависит от браузера, сервера, прокси и т.д.) Есть ли лучший способ сделать это?

Если это имеет значение, я работаю с Django и Python, и я не могу использовать какие-либо сценарии на стороне клиента (т.Е.JavaScript).

Твое здоровье, Бен

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

Решение

Сохраните текст где-нибудь (например,база данных), а затем передайте через первичный ключ.

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

В результате вы получите изображение для ПУБЛИКАЦИИ - оно может вам не понравиться

  1. Поместите iFrame туда, где вы хотите разместить изображение, и измените его размер, а также удалите полосы прокрутки
  2. Установите src в форму со скрытыми входными данными, заданными в параметрах вашей публикации, и действием, заданным в URL, который будет генерировать изображение
  3. отправьте форму автоматически с помощью JavaScript в body.onload HTML-кода iFrame

    Тогда, либо:

  4. Возвращайте набор типов содержимого к изображению и передавайте байты изображения в потоковом режиме

    или:

  5. сохраните параметры post где-нибудь и сгенерируйте небольшой идентификатор

  6. отправляйте обратно HTML с тегом img, используя идентификатор в URL-адресе - на сервере найдите параметры публикации

    или:

  7. создайте страницу с тегом image со встроенным изображением

    http://danielmclaren.net/2008/03/embedding-base64-image-data-into-a-webpage

Собирая воедино то, что уже было сказано, как насчет создания двух страниц?Первая страница отправляет запрос POST при отправке формы (скажем, в create_img.py) с текстом =xxxxxxx...параметр.Затем create_img.py принимает параметр text, создает с его помощью изображение и вставляет его (или ссылку на файловую систему) в базу данных, затем при рендеринге второй страницы генерирует img-теги типа <img src="render_img.py?row_id=0122">.На этом этапе render_img.py просто запрашивает базу данных для данного изображения.Перед созданием изображения вы можете проверить, есть ли оно уже в базе данных, поэтому повторно используйте предыдущие изображения с тем же текстовым параметром.

img использует GET.Вам придется придумать другой механизм.Как насчет вызова той же функции в image.py и сохранения файла как временного файла, на который вы ссылаетесь в теге img?Или как насчет сохранения значения текста в строке базы данных во время рендеринга этого тега img и использования row_id в качестве того, что вы передаете в скрипт image.py ?

Возможно, вам удастся устранить проблему, сжав текст в параметре get.

Судя по ссылке ниже, какое-то время с вами все будет в порядке ;)

http://www.boutell.com/newfaq/misc/urllength.html

Если вы используете django, может быть, вы можете сделать это с помощью тега шаблона вместо этого?

Что - то вроде:

<img src="{% create_image "This is the text that will be displayed" %}">

Функция create_image создаст изображение с фиктивным / случайным / сгенерированным именем файла и вернет путь.

Это позволяет избежать необходимости ПОЛУЧАТЬ или публиковать в скрипте, и изображения будут иметь управляемые имена файлов.

Я вижу некоторые потенциальные проблемы с таким подходом, я просто выкидываю эту идею наружу ;)

Хорошо, я немного опоздал на вечеринку, но вы могли бы использовать сочетание MHTML (для IE7 и ниже) и схемы URI данных (для всех других современных браузеров).Это действительно требует небольшой работы как на клиенте, так и на сервере, но в конечном итоге вы можете получить

newimg.src = 'blah';

Статья о том, как это сделать, находится на http://gingerbbm.com/?p=127.

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