2015-10-04 2 views
1

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

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

ответ

2

В вашем «решении» вы снова повторяете ту же ошибку. Вы снова пытаетесь получить доступ к файлу напрямую через HTTP, который находится ниже вашего веб-корня (общая папка, httpdocs, ...).

Вы уже предлагаете правильное решение, а именно, чтобы получить файл с PHP и обслуживать его, но тогда вы этого не делаете. У вас есть два основных решения для задачи:

Переместить файл в общественном месте

Здесь вы можете навсегда изменить расположение файла на что-то вроде mysite.com/downloads/file.pdf или copy его там динамически с PHP:

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

Подавать файл на лету

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

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

Вы настоящий MVP –