Pregunta

He escrito un script CGI que crea una imagen dinámicamente usando datos GET. Para incluir esta imagen en mi página web, estoy usando el siguiente código:

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

El problema es que espero en el futuro el " text " el campo se alargará mucho y la URL se volverá demasiado grande. Al buscar en Google no parece haber un límite fijo en la longitud de la URL (es decir, depende del navegador, el servidor, el proxy, etc.) ¿Hay una mejor manera de hacerlo?

Si es importante, estoy trabajando con Django y Python y no puedo usar ninguna secuencia de comandos del lado del cliente (es decir, JavaScript).

Saludos, Ben

¿Fue útil?

Solución

Almacene el texto en algún lugar (por ejemplo, una base de datos) y luego pase la clave principal.

Otros consejos

Esto le dará una imagen como resultado de una POST; puede que no le guste

  1. Coloque un iFrame donde desee la imagen, ajústelo y elimine las barras de desplazamiento
  2. Establezca el src en un formulario con entradas ocultas establecidas en sus parámetros de publicación y la acción establecida en la URL que generará la imagen
  3. envíe el formulario automáticamente con JavaScript en el body.onload del HTML del iFrame

    Entonces, ya sea:

  4. Devuelve un conjunto de tipos de contenido a una imagen y transmite los bytes de la imagen

    or:

  5. almacenar los parámetros de publicación en algún lugar y generar una pequeña identificación

  6. devuelve HTML con una etiqueta img usando la identificación en la url - en el servidor busca los parámetros de publicación

    or:

  7. generar una página con una etiqueta de imagen con una imagen incrustada

    http://danielmclaren.net/2008 / 03 / embedded-base64-image-data-into-a-a-page

Reuniendo lo que ya se ha dicho, ¿qué tal crear dos páginas? La primera página envía una solicitud POST cuando se envía el formulario (digamos que create_img.py) con un parámetro text = xxxxxxx ... Luego create_img.py toma el parámetro de texto y crea una imagen con él y lo inserta (o una referencia del sistema de archivos) en la base de datos, luego, al representar la segunda página, genera etiquetas img como <img src="render_img.py?row_id=0122">. En este punto, render_img.py simplemente consulta la base de datos para la imagen dada. Antes de crear la imagen, puede verificar si ya está en la base de datos, por lo tanto, reutilizando / reciclando imágenes anteriores con el mismo parámetro de texto.

img usa GET. Tendrás que encontrar otro mecanismo. ¿Qué hay de llamar a la misma funcionalidad en image.py y guardar el archivo como un archivo temporal que refieres en la etiqueta img? ¿O qué tal guardar el valor del texto en una fila de base de datos durante la representación de esta etiqueta img y usar row_id como lo que pasa en el script image.py?

Es posible que pueda mitigar el problema al comprimir el texto en el parámetro get.

Desde el siguiente enlace parece que estarás bien por un tiempo;)

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

Si está utilizando django, ¿tal vez pueda hacerlo mediante una etiqueta de plantilla en su lugar?

Algo así como:

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

La función create_image crearía la imagen con un nombre de archivo ficticio / aleatorio / generado, y devolvería la ruta.

Esto evita tener que OBTENER o PUBLICAR el script, y las imágenes tendrán nombres de archivo manejables.

Puedo ver algunos problemas potenciales con este enfoque, solo estoy lanzando la idea por ahí;)

Bien, llego un poco tarde a la fiesta, pero podría usar una combinación de MHTML (para IE7 y versiones inferiores) y el esquema de URI de datos (para todos los demás navegadores modernos). Requiere un poco de trabajo tanto en el cliente como en el servidor, pero finalmente puede terminar con

newimg.src = 'blah';

La descripción de cómo hacer esto está en http://gingerbbm.com/?p= 127 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top