gpt4 book ai didi

php - 在 php 的 postgresql bytea 列中插入 pdf/images

转载 作者:行者123 更新时间:2023-11-29 12:59:43 25 4
gpt4 key购买 nike

我正在尝试将 pdf 或图像作为 blob 插入到 postgresql bytea 列中。这是我试过的

$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,要么得到一个损坏的 pdf。在这里实现我想要的目标的最佳方法是什么?

最佳答案

我刚刚发现我做错了什么。如果以后有人遇到类似问题并需要像我这样的帮助,我会在这里发布更新的代码。正如 Craig 提到的,我们不必使用 pg_escape_byteaaddslashes。我们所需要的只是简单地使用 fopen 打开文件,在我的例子中是二进制格式,然后绑定(bind)指定参数类型为 PDO::PARAM_LOB 的参数。

  $file =  $_FILES['attachments']['tmp_name'][$i];
if($file != '') {
$p = fopen($file,'rb');
$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', $p, PDO::PARAM_LOB);
$blobQuery->bindParam(':blob_name', $_FILES['attachments']['name'][$i]);
$blobQuery->bindParam(':blob_type', $ext);
$blobQuery->execute();
$blob_id = $blobQuery->fetchColumn();
$mime_type = $_FILES['attachments']['type'][$i];
$attachmentQuery = $dbconn->prepare("INSERT INTO msg.email_attachment(email_id,blob_id,mime_type,is_in_line) values($email_id,$blob_id,:mime_type,1)");
$attachmentQuery->execute(array(
':mime_type' => $mime_type
));
}

this link可能会从我进入解决方案的地方提供帮助。

关于php - 在 php 的 postgresql bytea 列中插入 pdf/images,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33870149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com