文件下载与PHP到网页

时间:2010-07-27 20:43:07

标签: php download

我开发了一个网页,我想创建一个下载部分。我有一个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 个答案:

答案 0 :(得分:1)

我认为字符搞砸了。尝试用普通单引号(')替换它们,并在从某人的博客上复制代码时更加小心。 ;)

答案 1 :(得分:0)

file_exists()is_readable()不喜欢相对路径。改为使用绝对路径。

您可以使用$path = $_SERVER['DOCUMENT_ROOT'] . "/$filename";

答案 2 :(得分:0)

我将以下代码用于我的应用程序,这对我有用。

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