Domanda

Ho scritto uno script CGI che crea un'immagine in modo dinamico usando i dati GET. Per includere questa immagine nella mia pagina web, sto usando il seguente codice:

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

Il problema è che mi aspetto in futuro il " text " il campo diventerà molto lungo e l'URL diventerà troppo grande. Da Google in giro non sembra esserci un limite fisso alla lunghezza dell'URL (cioè dipende dal browser, server, proxy, ecc.) C'è un modo migliore per farlo?

Se è importante, sto lavorando con Django e Python e non posso usare alcun script lato client (es. JavaScript).

Saluti, Ben

È stato utile?

Soluzione

Memorizza il testo da qualche parte (ad esempio un database) e poi passa attraverso la chiave primaria.

Altri suggerimenti

Questo ti darà un'immagine come risultato di un POST - potresti non piacerti

  1. Posiziona un iFrame nel punto in cui desideri l'immagine e ridimensionalo e rimuovi le barre di scorrimento
  2. Imposta src su un modulo con input nascosti impostati sui parametri del tuo post e l'azione impostata sull'URL che genererà l'immagine
  3. invia automaticamente il modulo con JavaScript nel body.onload dell'HTML dell'iFrame

    Quindi:

  4. Ripristina un set di tipi di contenuto su un'immagine e trasmette i byte dell'immagine in streaming

    o

  5. archivia da qualche parte i parametri dei post e genera un piccolo id

  6. restituisce HTML con un tag img usando l'id nell'URL - sul server cerca i parametri post

    o

  7. genera una pagina con un tag immagine con un'immagine incorporata

    http://danielmclaren.net/2008 / 03 / embedding-Base64-image-data-in-un-pagina web

Mettendo insieme ciò che è già stato detto, che ne dici di creare due pagine. La prima pagina invia una richiesta POST quando viene inviato il modulo (diciamo per creare_img.py) con un parametro text = xxxxxxx .... Quindi create_img.py prende il parametro text e crea un'immagine con esso e la inserisce (o un riferimento al filesystem) nel db, quindi quando si esegue il rendering della seconda pagina, si generano tag img come <img src="render_img.py?row_id=0122">. A questo punto, render_img.py richiede semplicemente il db per l'immagine data. Prima di creare l'immagine è possibile verificare se è già presente nel database, quindi riutilizzare / riciclare le immagini precedenti con lo stesso parametro di testo.

img usa GET. Dovrai inventare un altro meccanismo. Che ne dite di chiamare la stessa funzionalità in image.py e salvare il file come file temporaneo che si rifà nel tag img? O che ne dici di salvare il valore del testo in una riga db durante il rendering di questo tag img e usare row_id come ciò che passi nello script image.py?

Potresti essere in grado di mitigare il problema comprimendo il testo nel parametro get.

Dal seguente link sembra che starai bene per un po ';)

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

Se stai usando django, forse puoi farlo tramite un tag template?

Qualcosa del tipo:

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

La funzione create_image crea l'immagine con un nome file fittizio / casuale / generato e restituisce il percorso.

Questo evita di dover OTTENERE o INVIARE la sceneggiatura e le immagini avranno nomi di file gestibili.

Riesco a vedere alcuni potenziali problemi con questo approccio, sto solo lanciando l'idea là fuori;)

OK, sono un po 'in ritardo alla festa, ma potresti usare un mix di MHTML (per IE7 e precedenti) e lo schema URI dei dati (per tutti gli altri browser moderni). Richiede un po 'di lavoro sia sul client che sul server ma alla fine puoi finire con

newimg.src = 'blah';

Il resoconto su come fare questo è su http://gingerbbm.com/?p= 127 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top