Refresh del Netscape

Ernesto Hernandez-Novich emhn at telcel.net.ve
Mon Aug 6 19:48:53 CDT 2001


On Tue, 31 Jul 2001, hans olzem wrote:
> asi seleccione una foto:
> 	if($q->param('pictures')) { 
> 		sql(sprintf "select lo_export(pictures.jpg, '/tmp/t1.jpg' ) from
> 		pictures where jpg = '%s'",$q->param('pics.selected'));
> 			}
> 
> la qual quize mostrar en la pantalla:
> 
> 	print "<IMG SRC= file:/tmp/t1.jpg height=200
> 					width=260>";	
> 
> Con la primera foto al arancar Netscape va bien.
> Seleccionando otra foto si cambia el "/tmp/t1.jpg"
> y actaliza la lista de la base de datos, pero sigue
> con la foto anterior.
> 
> Por que Netscape no lee de nuevo el "/tmp/t1.jpg".

Porque _no_ tiene por qué hacerlo. Al indicarle un archivo local, Netscape
asume que es inmutable a menos que reciba un encabezado HTTP de "no cache";
aunque aparenta ser un problema de PBD (Programmer Brain Damage) en realidad
es bastante práctico.

La solución está en que no uses un URL file: sino que uses un _programa_
que "genere" la imagen, de manera que puedas mandar el encabezado de
no-cache. Y por supuesto que el programa se hace en Perl :-)

my $image = '/tmp/t1.jpg';
print $q->img( { 
                 src    => "/cgi-bin/pushimage.pl?file=$myfile",
                 height => '200',
                 width  => '260'
                } );

Mientras pushimage.pl puede ser algo como:

#!/usr/bin/perl -w
use CGI;
my $q = new CGI;
my $f = $q->param('file');
print $q->header( { type => 'image/jpeg', expires => 'now' } );
open I,$f or die "miserably $!\n";
binmode STDOUT;
while <I> { print; }
close I;

Dado que el nombre del archivo es parametrizable, puedes utilizar las
facilidades de Perl para generar nombres _temporales_ únicos de modo
que tu aplicación sea "multiusuario" sin inconvenientes. 
-- 
Ernesto Hernández-Novich - Running Linux 2.2.19 i686 - Unix: Live free or die!
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS d+(-) s+: a C+++$ UBLAVHIOSC++++$ P++++$ L+++$ E- W+ N++ ?o ?K w--- O- M- V
PS+ PE Y+ PGP>++ t+ 5 X+ R* tv+ b++ DI+++$ D++ G>++ e++ h+ r+ y++
-----END GEEK CODE BLOCK-----

------------------------------------------------------------------------
Enviar e-mail a <majordomo at pm.org> colocando en el cuerpo:
"UNSUBSCRIBE caracas-pm-list" para desuscribirse.
"INFO caracas-pm-list" para conocer las reglas de etiqueta.
------------------------------------------------------------------------



More information about the caracas-pm mailing list