我有一个从用户提交的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文件从服务器中删除的最佳方法是什么?
答案 0 :(得分:2)
这是失败的,因为我在文档的这一部分之前有一些输出。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
<div>
"navigation bar goes here"
</div>
<?php
$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;
?>
删除所有HTML后,我能够让它工作。