Incluindo uma imagem dinâmica em uma página da web usando POST?

votos
2

Eu escrevi um script CGI que cria uma imagem usando dinamicamente dados GET. Para incluir esta imagem em minha página, eu estou usando o seguinte código:

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

O problema é que eu esperar no futuro no campo texto vai ficar muito longo e o URL vai se tornar muito grande. De pesquisando por aí não parece ser um limite fixado em comprimento URL (ie. Depende do navegador, servidor proxy, etc.) Existe uma maneira melhor de fazer isso?

Se é importante, eu estou trabalhando com Django e Python e eu não posso usar qualquer scripting do lado do cliente (ie. JavaScript).

Cheers, Ben

Publicado 28/10/2008 em 14:46
fonte usuário
Em outras línguas...                            


8 respostas

votos
5

Armazenar o texto em algum lugar (por exemplo, um banco de dados) e, em seguida, passar pela chave primária.

Respondeu 28/10/2008 em 14:52
fonte usuário

votos
1

Juntando o que já foi dito, como sobre a criação de duas páginas. Primeira página envia um pedido POST quando o formulário é enviado (digamos que para create_img.py) com um texto = xxxxxxx ... parâmetro. Então create_img.py leva o parâmetro de texto e cria uma imagem com ele e insere-lo (ou uma referência do sistema de arquivos) para o db, em seguida, ao renderizar a segunda página, gerar tags img como <img src="render_img.py?row_id=0122">. Neste ponto, render_img.py simplesmente consulta o banco de dados para a imagem dada. Antes de criar a imagem que você pode verificar para ver se a sua já no banco de dados, portanto, reutilização / reciclagem de imagens anteriores com o mesmo parâmetro de texto.

Respondeu 28/10/2008 em 15:24
fonte usuário

votos
1

Isso vai te dar uma imagem como o resultado de um POST - você não pode gostar dele

  1. Coloque um iFrame onde deseja que a imagem e tamanho-lo e remover barras de rolagem
  2. Definir o src para um formulário com entradas escondidas definido para os parâmetros de pós e a ação definida para a URL que irá gerar a imagem
  3. enviar o formulário automaticamente com JavaScript no body.onload de HTML do iFrame

    Qualquer então:

  4. Sirva de volta um conjunto do tipo de conteúdo a uma imagem e transmitir os bytes de imagem

    ou:

  5. armazenar os parâmetros pós em algum lugar e gerar uma pequena id

  6. servir de volta HTML com uma tag img usando o id no url - no servidor de olhar para cima os parâmetros de pós

    ou:

  7. gerar uma página com uma tag de imagem com uma imagem incorporada

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

Respondeu 28/10/2008 em 15:22
fonte usuário

votos
0

OK, eu sou um pouco tarde para a festa, mas você pode usar uma mistura de MHTML (para IE7 e abaixo) e o esquema de URI de dados (para todos os outros navegadores modernos). Isso requer um pouco de trabalho no cliente e no servidor, mas você pode finalmente acabar com

newimg.src = 'blah';

O write-up sobre a forma de fazer isso é a http://gingerbbm.com/?p=127 .

Respondeu 27/06/2009 em 02:05
fonte usuário

votos
0

Se você estiver usando Django, talvez você pode fazer isso através de um tag em vez disso?

Algo como:

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

A função create_image criaria a imagem com um manequim / random filename / gerado e retornar o caminho.

Isso evita ter de GET ou POST para o script, e as imagens terão nomes de arquivo gerenciáveis.

Eu posso ver alguns problemas potenciais com esta abordagem, estou apenas jogando a idéia lá fora;)

Respondeu 28/10/2008 em 17:05
fonte usuário

votos
0

A partir do link abaixo, parece que você vai ficar bem por um tempo;)

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

Respondeu 28/10/2008 em 15:48
fonte usuário

votos
0

Você pode ser capaz de mitigar o problema, comprimindo o texto no parâmetro get.

Respondeu 28/10/2008 em 15:28
fonte usuário

votos
0

uso GET do img. Você vai ter que vir para cima com outro mecanismo. Que tal chamar a mesma funcionalidade em image.py e salvar o arquivo como um arquivo temporário que você ref na tag img? Ou sobre como salvar o valor de texto em uma linha db durante a prestação dessa tag img e usando o row_id como o que você passar para o script image.py?

Respondeu 28/10/2008 em 14:52
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more