【发布时间】:2015-11-23 11:37:56
【问题描述】:
我正在尝试在 postgresql bytea 列中插入 pdf 或图像作为 blob。这是我尝试过的
$file = $_FILES['attachments']['tmp_name'][$i];
if($file != '') {
$p = fopen($file,'r');
$data = fread($p,filesize($file));
$data = addslashes($data);
// $data = file_get_contents($file);
$escaped_data = pg_escape_bytea($data);
$ext = pathinfo($_FILES['attachments']['name'][$i], PATHINFO_EXTENSION);
$blobQuery = $dbconn->prepare("INSERT INTO app_blob(blob_name, blob_type, blob_date, blob_data) values(:blob_name,:blob_type,NOW(),:blob_data) RETURNING blob_id");
$blobQuery->bindParam(':blob_data', $escaped_data, PDO::PARAM_LOB);
$blobQuery->bindParam(':blob_name', $_FILES['attachments']['name'][$i]);
$blobQuery->bindParam(':blob_type', $ext);
$blobQuery->execute();
$blob_id = $blobQuery->fetchColumn();
}
我也尝试了许多不同的方法,比如不指定参数类型。我要么得到一个空的白色 pdf,要么得到一个损坏的。在这里实现我想要的最佳方式是什么?
【问题讨论】:
-
使用 PDO,并且不使用
pg_escape_bytea或pg_unescape_bytea。只需通过PDO::PARAM_LOB。 -
谢谢克雷格,你的评论帮助了我。
标签: php postgresql pdf pdo