出于安全考虑,我将PDF文件放在名为let jsonData = try JSONSerialization.data(withJSONObject: dictionary, options: .prettyPrinted)
的文件夹中,位于Pdf
之外。
我试图从位于应用程序文件夹内的控制器访问此文件。 我试过使用几条路径..
一个是:public_html
。
另一个是:../../../../Pdf/{$name_hash}.pdf
我试图包含该文件并将其作为js.openwindow以及/home/xx/Pdf/{$name_hash}.pdf
发送,但都无济于事!
文件是现有的,并且哈希函数也正确生成了名称,所以我确定它是设置问题的路径。
是否有一些CI规则我没有遵循设置路径?或者还有其他任何解决方案..请帮助!
答案 0 :(得分:1)
事情是,您无法访问浏览器网址中public_html
(或虚拟主机设置域的目录)后面的文件。您必须获取文件的内容并通过缓冲区将其发送到输出。您可以使用readfile($file)
PHP内置函数:
public function pdf()
{
// you would use it in your own method where $name_hash has generated value
$file = "/home/xx/Pdf/{$name_hash}.pdf";
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/pdf');
// change inline to attachment if you want to download it instead
header('Content-Disposition: inline; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
}
else "Can not read the file";
}