[pgsql-ayuda] Re: Large objects

From: Norma Cordero Sanchez <norma(at)vico(dot)fciencias(dot)unam(dot)mx>
To: pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
Subject: [pgsql-ayuda] Re: Large objects
Date: 1999-05-19 03:50:31
Message-ID: 199905190350.WAA01584@vico.fciencias.unam.mx
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


Victor Manuel Jaquez Leal wrote:
>> > esto para el web, esto es un usuario sube su archivo en texto via una
>> > pagina web, se guarda en la base de datos, y posteriormente el sistema
>> > puede desplegarlo en una pagina web.
>> >
>> > Alguna idea de como hacer esto???
>>
>> ?Qu? te parece esta funci?n en Perl?
>> La utilizo para subir im?genes, pero puedes cambiar la validaci?n del tipo
>> MIME para el tipo que desees subir.
>
>Hola, ya solucione la parte de subir el archivo, ahora lo que no se es como meterlo en la base
>de datos, estoy usando Postgres 6.5, ya cree la tabla con el objeto largo, pero ahora no se
>como meterle info. Alguna idea.

Hola todos.

Juan Manuel:
Tengo un ejemplito, muy simple que quiza te pueda ayudar, esta en PHP, pero
sera simple traducirlo a perl.

<?PHP

/*
EJEMPLIN SIMPLE PARA MANEJAR IMAGENES.

PARA ESTO SE TIENE UNA BASE DE DATOS HECHA ASI:
CREATE TABLE fotos ( nombre text primary key, foto oid );
** EL TIPO DE DATOS ES oid. RECORDAR DAR LOS PERMISOS ADECUADOS A NOBODY (O EL USUARIO QUE CONSULTE LA BASE DE DATOS)
*/

$conexion = pg_Connect( 'localhost', '5432', 'fotos' );
if ( !$conexion )
{
print( "ERROR en conexion" );
exit;
}

$arch_origen = '/usr/local/apache/htdocs/OL/logo.gif';
$arch_dest = '/usr/local/apache/htdocs/OL/bas.gif'; // ESTE DEBE EXISTIR, Y NOBODY DEBE TENER PERMISOS DE ESCRITURA Y LECTURA
$nombre = 'yoyis'; // QUE PUEDE PROVENIR DE UNA FORMA

$query = pg_Exec( $conexion, " SELECT foto FROM fotos WHERE nombre = '$nombre' ; " );
if ( !$query )
print( "Error query" );
else
{
if ( pg_NumRows( $query ) <= 0 )
{
$orden = " INSERT INTO fotos VALUES ( '$nombre', lo_import( '$arch_origen' ) ) ; ";
$query = pg_Exec( $conexion, $orden );
// AQUI GUARDE EN LA BASE DE DATOS LA IMAGEN, EN ESTE MONENTO YA PODRIA BORRAR EL ARCHIVO ORIGEN DE DISCO, Y YA NO AFECTA LOS DAT\
OS DE LA BASE.
if ( !$query )
print( "Error query" );
}
$query = pg_Exec( $conexion, " SELECT foto FROM fotos WHERE nombre = '$nombre' " );
if ( !$query )
print( "Error query" );

$oid_foto = pg_Result( $query, 0, 'foto' );
print( "FOTO ( $nombre ): $oid_foto <P>" );
}

// Y CUANDO SE NECESITE VER LA FOTO:
$query = pg_Exec( $conexion, " SELECT lo_export( fotos.foto, '$arch_dest' ) FROM fotos WHERE nombre = '$nombre' ; " );
if ( !$query )
print( "Error query" );

print( " Foto de $nombre: <P> " );

print( "
<img src=\"Pon_Imagen.php3?$nombre+$arch_dest\">
" );

/*
SI SE QUIERE ELIMINAR LA FOTO EN LA BASE DE DATOS SE EJECUTA EN POSTGRES:
SELECT lo_unlink( $oid_foto ); DELETE FROM fotos WHERE nombre = '$nombre';
*/

pg_FreeResult( $query );
pg_Close( $conexion );

?>

Y EL ARCHIVO Pon_Imagen.php3 (QUE BIEN PUEDE IR EN EL MISMO) ES:

<?PHP

Header( "Content-type: image/gif" );

list( $nombre, $arch_dest ) = $argv;

$foto = ImageCreateFromGif( $arch_dest );

ImageGif( $foto );

ImageDestroy( $foto );

?>

Espero que te sea de utilidad.

NORMA
--------- Pie de mensaje -------------------------------------------
Archivo historico: http://tlali.iztacala.unam.mx/maillist/pgsql-ayuda
Cancelar inscripcion:
mail to: majordomo(at)tlali(dot)iztacala(dot)unam(dot)mx
text : unsubscribe pgsql-ayuda

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Roberto Andrade Fonseca 2000-01-12 23:16:36 Re: Pasar datos a un plano para auditoria
Previous Message Carlos Peralta Ramirez 1999-04-20 11:25:15 [pgsql-ayuda] Ayuda Urgente , Problemas con copy !!!!!!