Включение динамического изображения на веб-страницу с помощью POST?
Вопрос
Я написал CGI-скрипт, который создает изображение динамически, используя GET data.Чтобы включить это изображение на свою веб-страницу, я использую следующий код:
<img src="image.py?text=xxxxxxxxxxxxxx">
Проблема в том, что я ожидаю, что в будущем поле "текст" станет очень длинным, а URL-адрес - слишком большим.Из поиска в Google, похоже, не существует фиксированного ограничения на длину URL (т. Е.зависит от браузера, сервера, прокси и т.д.) Есть ли лучший способ сделать это?
Если это имеет значение, я работаю с Django и Python, и я не могу использовать какие-либо сценарии на стороне клиента (т.Е.JavaScript).
Твое здоровье, Бен
Решение
Сохраните текст где-нибудь (например,база данных), а затем передайте через первичный ключ.
Другие советы
В результате вы получите изображение для ПУБЛИКАЦИИ - оно может вам не понравиться
- Поместите iFrame туда, где вы хотите разместить изображение, и измените его размер, а также удалите полосы прокрутки
- Установите src в форму со скрытыми входными данными, заданными в параметрах вашей публикации, и действием, заданным в URL, который будет генерировать изображение
отправьте форму автоматически с помощью JavaScript в body.onload HTML-кода iFrame
Тогда, либо:
Возвращайте набор типов содержимого к изображению и передавайте байты изображения в потоковом режиме
или:
сохраните параметры post где-нибудь и сгенерируйте небольшой идентификатор
отправляйте обратно HTML с тегом img, используя идентификатор в URL-адресе - на сервере найдите параметры публикации
или:
создайте страницу с тегом 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.
Судя по ссылке ниже, какое-то время с вами все будет в порядке ;)
Если вы используете 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.