Postgres: file -> Bytea

Antes que nada, creamos una tabla en la Base de datos:

prueba=# create table archivo (Id serial, Nombre varchar(20), Tipo varchar(20), Contenido bytea, primary key (Id));

Luego hay que crear un formulario sencillo HTML:

 <form action="dato_image.php" method="post" enctype="multipart/form-data">
        <table>
           <tr> <td>
               <label for="archivo">Busque El archivo</label> </td>
               <td>
               <input type="file" name="archivo" size="20"> </td></tr>
            <tr><td>
                <input type="submit" value="cargar archivo"></td></tr></table>    </form>

Vamos a crear un archivo PHP que conecte con la BD

<?php

   //Recibimos los datos 

   $nombre_archivo=$_FILES['archivo']['name'];
   $tipo_archivo=$_FILES['archivo']['type'];
   $tamagno_archivo=$_FILES['archivo']['size'];

if($tamagno_archivo<=100000){
     
    $carpeta_destino='/var/www/html/php/Upload_Archivo/';
//movemos el archivo de la carpeta temporal al directorio escogido 
  move_uploaded_file($_FILES['archivo']['tmp_name'],$carpeta_destino.$nombre_archivo);

}else{
    echo "El archivo es muy grande";
 }

$conexion=pg_connect("host=127.0.0.1 dbname=prueba user=postgres password=12345") or die ("No se pudo conectar a la DB: " . pg_last_error());

pg_set_client_encoding($conexion, "UTF8");



$archivo_imagen=fopen($carpeta_destino.$nombre_archivo, "r");
$contenido=fread($archivo_imagen,$tamagno_archivo);
$contenido=addslashes($contenido); 
// addslashes para que php pueda escapar las barras invertidas y pueda interpretar la ruta
fclose($archivo_archivo);

$sql="INSERT INTO archivo (Nombre,Tipo,Contenido) values  ('$nombre_archivo','$tipo_archivo','{$contenido}')";

   $resultado=pg_query($conexion,$sql);

if(pg_affected_rows($resultado)==0){
        
    echo " No se ha insertado registro";
    
}else{
    
   echo " Se ha insertado el registro con éxito";
    
}

 
?>
Ronny Alejandro Garcia Marin

Acerca de Ronny Alejandro Garcia Marin

Ronny Garcia es TSU en Informática / Ingeniero de Sistemas y fundador de la empresa Linuxtrader, se ha desempeñado en las áreas de liderazgo de proyectos IT. Actualmente trabaja tiempo completo como especialista en Cryptocurrency.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *