загрузчик файлов с php на веб-страницу - PullRequest
0 голосов
/ 28 июля 2010

Я разрабатываю веб-страницу и хочу создать раздел для загрузки.У меня есть php-код для загрузки файлов, но я пробовал его много раз, но он не работает.Я постоянно вижу сообщение об ошибке, но файл picture.jpg находится в том же каталоге, что и download.php и index.php.Я не знаю, в чем проблема.

Содержание файла download.php:

<?php


if (isset($_GET[‘file’]) && basename($_GET[‘file’]) == $_GET[‘file’]) {

$filename = $_GET[‘file’];

} else {

$filename = NULL;

} 


$err = ‘<p style="color:#990000">Sorry, the file you are requesting is unavailable.</p>’; 

if (!$filename) {


echo $err;

} else {


$path = ‘downloads/’.$filename;


if (file_exists($path) && is_readable($path)) {


$size = filesize($path);
header('Content-Type: application/octet-stream');
header('Content-Length: '.$size);
header('Content-Disposition: attachment; filename='.$filename);
header('Content-Transfer-Encoding: binary');


$file = @ fopen($path, ‘rb’);

if ($file) {


fpassthru($file);
exit;

} else {

echo $err;

}

} else {

echo $err;

}

}

?>

содержимое файла index.php:

<a href="download.php?file=picture.jpg">Download file</a>

Ответы [ 3 ]

1 голос
/ 28 июля 2010

Я думаю, что символы и облажались. Попробуйте заменить их обычными одинарными кавычками (') и будьте более осторожны при копировании кода из чьего-либо блога. ;)

0 голосов
/ 20 сентября 2013

Я использую следующий код для своего приложения, которое работает для меня.

if(file_exists($path . $file)){
  header("Content-type: application/octet-stream");
  header("Content-Disposition: attachment; filename=\"" . $file . "\"");
  header("Content-Length: " . filesize($path . $file)); 
  readfile(base64_decode($path . $file);
}else{
  // No file, do something
0 голосов
/ 28 июля 2010

file_exists() и is_readable() не любят относительные пути.Вместо этого используйте абсолютный путь.

Возможно, вы можете использовать $path = $_SERVER['DOCUMENT_ROOT'] . "/$filename";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...