无法显示数据库中的中等大小的 pdf blob
Can't display medium size pdf blob from database
我正在尝试通过 HTML 和 PHP
在我的 XAMPP 服务器上显示存储在 MariaDB 数据库中的 PDF
代码:
<object data="data:application/pdf;base64,<?php echo base64_encode($this->view_data[0]["test"]); ?>" type="application/pdf" style="height:100%;width:100%"></object>
它适用于大小为 500kB 的 PDF,但对于更大大小的 PDF,页面保持空白。
我的 XAMPP conf 文件中是否需要进行任何配置?我试图增加几乎所有这些似乎都没有用
编辑:
我正在使用 "SELECT test from PDF WHERE testID = 1"
和函数
public function dbQuery($query, $params = []){ $stmt = $this->connect()->prepare($query); $stmt->execute($params); if (explode(' ',$query)[0] == "SELECT"){ $result = $stmt->fetchAll(); $this->close($this); return $result; } else{ $this->close($this); return $stmt->fetchAll(); } $this->close($this); }
填充 var $this->view_data 以便 PDF 存储在 $this->view_data[0]["test"]
它适用于所有 blobsize <= 500kB 的东西。我尝试设置 PDO MYSQL_ATTR_MAX_BUFFER_SIZE 但变量甚至没有初始化。
我找到了答案。这是因为我没有对 LOB(大对象)使用 PDOs 语句
有
$db = new PDO("mysql:host=".$dbhost.";dbname=".$dbname.";charset=utf8",$dbuser, $dbpwd);
$stmt = $db->prepare("SELECT test FROM PDFs WHERE testID=?");
$stmt->execute(array($_GET['testID']));
$stmt->bindColumn(1, $lob, PDO::PARAM_LOB);
$stmt->fetch(PDO::FETCH_BOUND);
header("Content-Type: application/pdf");
fpassthru($lob);
有效。
我正在尝试通过 HTML 和 PHP
在我的 XAMPP 服务器上显示存储在 MariaDB 数据库中的 PDF代码:
<object data="data:application/pdf;base64,<?php echo base64_encode($this->view_data[0]["test"]); ?>" type="application/pdf" style="height:100%;width:100%"></object>
它适用于大小为 500kB 的 PDF,但对于更大大小的 PDF,页面保持空白。
我的 XAMPP conf 文件中是否需要进行任何配置?我试图增加几乎所有这些似乎都没有用
编辑:
我正在使用 "SELECT test from PDF WHERE testID = 1"
和函数
public function dbQuery($query, $params = []){ $stmt = $this->connect()->prepare($query); $stmt->execute($params); if (explode(' ',$query)[0] == "SELECT"){ $result = $stmt->fetchAll(); $this->close($this); return $result; } else{ $this->close($this); return $stmt->fetchAll(); } $this->close($this); }
填充 var $this->view_data 以便 PDF 存储在 $this->view_data[0]["test"]
它适用于所有 blobsize <= 500kB 的东西。我尝试设置 PDO MYSQL_ATTR_MAX_BUFFER_SIZE 但变量甚至没有初始化。
我找到了答案。这是因为我没有对 LOB(大对象)使用 PDOs 语句 有
$db = new PDO("mysql:host=".$dbhost.";dbname=".$dbname.";charset=utf8",$dbuser, $dbpwd);
$stmt = $db->prepare("SELECT test FROM PDFs WHERE testID=?");
$stmt->execute(array($_GET['testID']));
$stmt->bindColumn(1, $lob, PDO::PARAM_LOB);
$stmt->fetch(PDO::FETCH_BOUND);
header("Content-Type: application/pdf");
fpassthru($lob);
有效。