Содержимое выходного файла такое же, как прямой доступ?

У меня есть файл на сервере с именем 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);
?>

Любое решение о том, как я могу получить доступ к этому файлу?

1

Решение

В вашем «решении» вы снова совершаете ту же ошибку. Вы снова пытаетесь получить доступ к файлу напрямую через HTTP, который находится ниже вашего веб-корня (общая папка, 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');
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]