用下面的代码吧:
<?
$upload_dir="../../upload/";
$upload_file  = "file1.rar";
$fp = fopen($upload_dir.$upload_file,"r"); // 打开文件 
// 输入文件标签
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($upload_dir.$upload_file));
Header("Content-Disposition: attachment; filename=" . $upload_file);
// 输出文件内容
echo fread($fp,filesize($upload_dir . $upload_file));
fclose($fp);
?>

解决方案 »

  1.   

    这个程序多半输出"文件找不到"吧?
    php提供了函数
    dirname 返回路径
    basename 返回文件名
    为什么不用呢?
    <?
    $w=strtok($title,"."); // 提取扩展名以前的字符,这对吗?
    $tit=$w;
    $file_name =$title;
    $file_dir = "F://FoxServ//www//courseware//"; // 要使用单个的"/"
    $file_dir=$file_dir.$tit."//"; // 同上
    $file_dir=addslashes($file_dir); // 不要这个处理
    if (!file_exists($file_dir . $file_name)) { 
    echo "文件找不到";
    exit;
    } else {
    $file = fopen($file_dir.$file_name,"r");
    Header("Content-type: application/octet-stream");
    Header("Accept-Ranges: bytes");
    Header("Accept-Length: ".filesize($file_dir.$file_name));
    Header("Content-Disposition: attachment; filename=" . $file_name);
    echo fread($file,filesize($file_dir.$file_name));
    fclose($file);
    exit;}
    ?>