Foros del Web » Programando para Internet » PHP »

Sobre como subir imagenes (cualquier archivo) a Interbase

Estas en el tema de Sobre como subir imagenes (cualquier archivo) a Interbase en el foro de PHP en Foros del Web. Pues eso, estoy buscando informacion relacionada al tema, mi duda mas que nada es si es igual (parecido) a como se hace en PostgreSQL y/o ...
  #1 (permalink)  
Antiguo 09/08/2005, 13:52
Avatar de c4r1o5  
Fecha de Ingreso: febrero-2005
Mensajes: 81
Antigüedad: 19 años, 1 mes
Puntos: 1
Sobre como subir imagenes (cualquier archivo) a Interbase

Pues eso, estoy buscando informacion relacionada al tema, mi duda mas que nada es si es igual (parecido) a como se hace en PostgreSQL y/o MySQL, he encontrado informacion interesante en un post de los Foros del Web pero no sobre como crear un campo blob en interbase y como subir los archivos a la base de datos. Si alguien me ayudara diciendome que tengo que leer, que sitio tengo que visitar se lo agradeceria mucho.

La info aqui :
http://www.forosdelweb.com/showthrea...ight=interbase
__________________
¿Que importa el resto?, el resto es simplemente la humanidad, hay que ser superior a humanidad, por fuerza, por altura de alma, por desprecio ...
  #2 (permalink)  
Antiguo 11/08/2005, 13:27
Avatar de c4r1o5  
Fecha de Ingreso: febrero-2005
Mensajes: 81
Antigüedad: 19 años, 1 mes
Puntos: 1
Subir imagenes (cualquier archivo) a InterBase (talvez firebird)

La solución aqui:

Gracias a todos por su valiosa cooperación, ya he logrado que esto funcione de acuerdo a lo esperado, enseguida pongo el código, como nota, hago uso de un archivo llamado functions.php donde hay dos funciones (conecta(); y desconecta();) que son las que realizan la conexión y desconexón a/de la base de la datos. Algo del codigó lo he tomado de este mísmo hilo, así que este codigo no es mío en su totalidad. Recuerden que este codigo es para InterBase. La estructura de la tabla en la base de datos es la siguiente:

Cita:
CREATE TABLE archivos (
id_file int NOT NULL,
nombre varchar(255) NOT NULL,
peso varchar(15) NOT NULL,
tipo varchar(30) NOT NULL,
file_pointer blob NOT NULL
)

upload.html (limite de subida=32MB)
Código PHP:
 <html>
 <
title>Pagina de prueba File Upload</title>
 <
body>
 <
form enctype="multipart/form-data" action="upload.php" method="post">
         <
input type="hidden" name="MAX_FILE_SIZE" value="33554432"/>
         
Elije el archivo que quieres subir : <input name="archivo" type="file"/>
         <
input type="submit" value="Subir archivo"/>
         <
br>
         <
input type="text" name="ident"/>
 </
form>
 </
body>
 </
html
upload.php
Código PHP:
 <html>
 <title>Upload a InterBase</title>
 <body>
 <?php
 
include ("./functions.php");
 
 
// Obtiene la ruta y el nombre del archivo temporal
 
$arch_temp=$_FILES['archivo']['tmp_name'];
 
 
// Se crea una conexion a la base de datos
 
$dbh=conectar();
 
 
// Se obtienen los atributos del archivo
 
$arch_name=$_FILES['archivo']['name'];
 
$arch_size=$_FILES['archivo']['size'];
 
$arch_type=$_FILES['archivo']['type'];
 
 
// Se abre el archivo
 
$fd=fopen($arch_temp,"r");
 
 
// Se crea el blob
 
$blob=ibase_blob_import($dbh,$fd);
 
 
// Se cierra el archivo
 
fclose($fd);
 
 if (!
is_string($blob)){ echo "No se puede importar"; }
 else {
        
         
// Se crea la consullta de inserción
        
$query="INSERT INTO archivos VALUES (".$_REQUEST['ident'].",'$arch_name','$arch_size','$arch_type',?)";
         
$prepared=ibase_prepare($dbh,$query);
         if (!
ibase_execute($prepared,$blob)){
                echo 
"No se ha podido insertar"; }
 }
 
 
// Se desconecta de la base de datos
 
desconecta();
 
?>
 </body>
 </html>
download.html
Código PHP:
 <html>
 <
title>Pagina de prueba File Upload</title>
 <
body>
 <
form action="download.php" method="post">
         
Elije el archivo que quieres ver : <input name="ident" type="text"/>
         <
input type="submit" value="Ver archivo"/>
 </
form>
 </
body>
 </
html
download.php
Código PHP:
 <?php
 
include ("./functions.php");
 
 
// Se conecta a la base de datos
 
$dbh=conectar();
 
 
// Establece la consulta
 
$query="SELECT file_pointer,nombre,tipo FROM ARCHIVOS WHERE id_file=".$_REQUEST['ident'];
 
 
// Se realiza la consulta
 
$result=ibase_query($dbh,$query);
 
 
// Valida si la consulta fue exitosa
 
if (!$result) { echo "No se puede realizar la consulta"; }
 else {
         
         
// Se crea una variable que obtiene la tupla obtenida
         
$data=ibase_fetch_row($result);
         
         
// Se obtiene la longitud del blob
         
$blob_data=ibase_blob_info($data[0]);
         
         
// Se crea un manejador para el apuntador del blob
         
$blob_hndl=ibase_blob_open($data[0]);
         
         
// Se obtiene el contenido del blob
         
$archivo=ibase_blob_get($blob_hndl,$blob_data[0]);
         
         
// Se cierra el blob
         
ibase_blob_close($blob_hndl);
         
$tipo=$data[2];
         
$nombre_arch=$data[1];
         
        
// Si se mantiene la sentencia "attachment" se forza la descarga     
         // del archivo, de otro modo, si es un MIME conocido, el navegador 
         // interpreta el archivo      
         
header("Content-Disposition: attachment; filename=\"$nombre_arch\"");
         
header("Content-type: $tipo");
         
header("Content-Length: $blob_data[0]");
         
        
// Se manda el codigo binario del blob al navegador
         
echo $archivo;
 }
 
// Se desconecta de la base de datos
 
desconecta();
 
?>
__________________
¿Que importa el resto?, el resto es simplemente la humanidad, hay que ser superior a humanidad, por fuerza, por altura de alma, por desprecio ...

Última edición por c4r1o5; 11/08/2005 a las 15:52
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:24.