输出文件内容与直接访问相同


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);
?>

有什么办法可以访问这个文件吗?

在你的"解决方案"中,你又犯了完全相同的错误。您再次尝试通过HTTP直接访问文件,该文件位于您的web根目录(公共文件夹,httpdocs,…)。

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

将文件移动到公共位置

在这里,你可以永久地将文件位置更改为mysite.com/downloads/file.pdf之类的东西,或者用PHP动态地复制它:

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

动态提供文件

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