2013-12-11 2 views
0

У меня есть документ, размещенный в папке выше public_html по соображениям безопасности - перемещение файлов в корневой каталог не является вариантом.Загрузка файла, находящегося выше public_html

Я пытаюсь получить к ним доступ через readfile(), но все, что я загружаю, составляет 0 байт и пустой файл. Я думаю, проблема заключается в том, что заголовок Content-Length не получает правильное значение, потому что fileize ($ target) не дает результата.

Любые мысли? Включенный код:

header('Content-Description: File Transfer'); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Transfer-Encoding: binary"); 
header("Pragma: public"); 
$file="../docs/$c/$path"; 
$size=filesize($file); //i think this line is the problem 
header ("Content-Length: $size"); 
header("Content-Type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=\"$filename\""); 
readfile($file_url); 
+0

Если вы не получаете вывод из 'filesize()', то ваш путь, вероятно, неверен. – Brad

+0

просто проверен, чтобы убедиться, что путь правильный - это так. любые другие идеи? – user988129

+0

Затем у вас есть проблема с разрешениями. – Brad

ответ

2

Я не вижу $file_url, определенного в вашем коде. Может быть, это должно быть $file:

header('Content-Description: File Transfer'); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Transfer-Encoding: binary"); 
header("Pragma: public"); 
$file="../docs/$c/$path"; 
$size=filesize($file); //i think this line is the problem 
header ("Content-Length: $size"); 
header("Content-Type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=\"$filename\""); 
readfile($file); 

Я также не вижу $filename определены.

+0

имя файла определяется выше в коде - эта переменная работает правильно. file_url должен быть файлом - это тоже правильно. – user988129

+0

Без заголовков вы можете 'readfile ($ file)' и просто выводить необработанный код? Это может быть проблема с разрешениями, указанная @Brad, если вы не можете. Возможно, вы захотите попробовать скопировать файл в веб-папку, а затем удалить его ... но это неэффективно ... –

Смежные вопросы