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";
}
?>