PHP的麻烦显示base64编码的pdf从数据库另存为blob

时间:2019-02-26 22:45:10

标签: php pdf blob

im将pdf文件作为longblob存储在数据库中,并且希望并希望将其作为空白邮件的附件打开。

这是插入命令:

$file = addslashes(file_get_contents($_FILES['file']['tmp_name']));
$filename = addslashes($_FILES['file']['name']);
$inexec = $pdo->prepare("INSERT into pm 
                (id, id2, title, user1, user2, message, file, 
                filename, timestamp, user1read, user2read, sender)
            values('$id', '1', '$title', '$userid', '$dn1recepid', '$message', '{$file}',
                    '{$filename}', '$time', 'yes', 'no', '$userid')")
        ->execute()

然后在消息中有一个用于附件的按钮:

<a class="btn btn-light" href="downloadfile.php?filesrc=<?=$dn2['filename']; ?>" target="_blank">

调用此代码:

$url=$_SERVER['REQUEST_URI'];
$parsed_url=parse_url($url);
parse_str($parsed_url['query'], $myvars);
$filename = $myvars['filesrc'];

$dlfile = $pdo->query("SELECT `file` FROM `pm` WHERE `filename`='$filename'");

$count = $dlfile->rowCount();


if($dlfile->rowCount() == 1)
{
  $result = $dlfile->fetch(PDO::FETCH_ASSOC);
  $file = base64_encode($result['file']);

  header('Content-type: application/pdf');
  header('Content-Disposition: inline; filename="' . $filename . '"');
  header('Content-Transfer-Encoding: binary');
  header('Accept-Ranges: bytes');
  readfile($file);
}
else
{
die('<h1>Der Download ist gescheitert</h1>');
}

im从URL中获取我的文件名,然后在db中搜索相关文件。这里是停止工作的地方。我找到了文件,但是一旦打开链接,便会打开一个带有pdf布局的新标签页,但是却收到错误消息:“加载pdf文档时出错”。

我签出了var_dump($ file),它仍然是一串随机的东西,但是我不是专业人士,所以我不知道如何从这里继续。我在此页面上尝试了与其他操作不同的命令,但没有什么作用。任何帮助将不胜感激!

最好的问候 jchanni

0 个答案:

没有答案