输出文件内容和直接访问一样?

Output file content same as direct access?

我在服务器上有一个名为 'file.pdf' 的文件,我无法像这样直接访问它: servername.com/file.pdf, 因为它位于 servername.com 重定向到的文件夹的上层。

我需要使用php获取文件然后输出,所以它看起来像这样: servername.com/get_file.php?filename=file.pdf

这是我尝试过的方法,但是它不起作用:

<?php
    $filename = $_GET['filename'];
    header('Location: ../seedbox/downloads/knygos' . $filename);
?>

关于我如何访问该文件的任何解决方案?

在您的 "solution" 中,您又犯了完全相同的错误。您再次尝试通过 HTTP 直接访问文件,该文件位于您的网络根目录下(public 文件夹、httpdocs、...)。

您已经提出了正确的解决方案,即使用 PHP 获取文件并提供服务,但您没有这样做。您有两个主要的问题解决方案:

将文件移动到 public 位置

在这里您可以将文件位置永久更改为 mysite.com/downloads/file.pdfcopy 之类的位置 PHP:

copy('../files/file.pdf', 'downloads/file.pdf');

即时提供文件

header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=file.pdf");

readfile('../files/file.pdf');