Para subir binarios puedes utilizar campos de tipo bytea (es lo que utilizo), te mando parte del código que tengo:
Código PHP:
// Variables de la foto
$type = $_FILES["archivo"]["type"];
$tmp_name = $_FILES["archivo"]["tmp_name"];
$size = $_FILES["archivo"]["size"];
# contenido del archivo
$fp = fopen($tmp_name, "rb");
$tblob = fread($fp, filesize($tmp_name));
$tblob = pg_escape_bytea($tblob); // $tblob = addslashes($tblob);
fclose($fp);
#nombre de la foto
$desc = $_POST["desc"];
$link = pg_connect("host=$dbhost user=$dbuser password=$dbpwd dbname=$dbname") or die(pg_last_error($link));;
$sql = "INSERT INTO tabla(descripcion, archivo, mime, size)
VALUES ('$desc', '$tblob', '$type', $size)";
pg_query($link, $sql) or die(pg_last_error($link));
pg_close();
Es de especial importancia esta línea
$tblob = pg_escape_bytea($tblob); // $tblob = addslashes($tblob);
Para mayor información puedes visitar
http://www.php.net/pg_escape_bytea
Saludos