【发布时间】:2018-01-09 23:40:27
【问题描述】:
我有一个用户提交的 pdf 文件(文件上传)。当我得到文件时,我通过两个函数运行它并将它作为 blob 存储在数据库中。
$file = base64_encode(file_get_contents($pathToFile));
我想要做的是将 pdf 发送回浏览器而不将其写入磁盘(服务器端)。如果我再次构建文件,将其保存到磁盘,并生成指向该文件的链接,则它可以正常打开。
file_put_contents("pathToPutFile", base64_decode($dataFromDB));
但是,如果我尝试将 pdf 文件发送到浏览器而不保存到磁盘,则会收到如下图所示的错误“无法加载 PDF 文档”。
用于尝试此壮举的代码如下。
$data = base64_decode($origSel['InvestigationFile']);
header('Content-Type: application/pdf');
header('Content-Disposition: inline; filename="Statement"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
echo $data;
如果文件没有先写入磁盘(服务器端),是否可以将文件发送给用户?
如果可能的话,我错过了什么/做错了什么?
如果不可能,是什么导致它不可能,以及确保 PDF 文件在用户完成查看后立即从服务器中删除的最佳方法是什么?
【问题讨论】: