Home >Backend Development >PHP Tutorial >(高分)为什么这段代码不能实现文件下载

(高分)为什么这段代码不能实现文件下载

WBOY
WBOYOriginal
2016-06-23 14:39:43928browse

高分悬赏:
为什么我这段代码不能实现文件下载,在LINUX和WINDOWS下我都试过了。在WINDOWS下运行到OB_start();程序就没运行下去了。
$root="D:/wamp/www/panjinli/downloadsouce";
if(is_dir($root))
{
   $openHandle=opendir($root);
   while(false!==($file=readdir($openHandle)))
   {
       if(!is_dir($root.$file))
   {
         echo "".$root.$file."
";
       }
   }
   closedir($openHandle);
}else
{
echo "文件夹不存在";
}
 
$do=(isset($_REQUEST['do'])) ? addslashes($_REQUEST['do']) : '';
if($do=='down')
{
    $file=(isset($_REQUEST['file'])) ? addslashes($_REQUEST['file']) : '';
    $path=(isset($_REQUEST['path'])) ? addslashes($_REQUEST['path']) : '';

    OB_start();
    function DownLoad($info,$file) 
{
        OB_Clean();
        if(!file_exists($info))
{
            exit('Error:'.__LINE__.','.basename(__FILE__).'!');
        }

        $info=file_get_contents($info);
 
        header('Content-Transfer-Encoding: binary');
        header('Content-Type: application/force-download; name="'.$file.'"');
        header('Content-Disposition: attachment; filename='.$file.'');
        header('Cache-control: private');
        header('Pragma: no-cache');
        header('Expires: 0');
        echo $info;
        die();
    }
    DownLoad($path.$file,$file);
}
?>


回复讨论(解决方案)

怎么没人啊 人呢人呢


DownLoad($path.$file,$file);

换成
DownLoad($path.'/'.$file,$file);


DownLoad($path.$file,$file);

换成
DownLoad($path.'/'.$file,$file); 我试过了  不行

,我改了这个,本地测试已经ok了,不明白了。。。设置编码看看

,我改了这个,本地测试已经ok了,不明白了。。。设置编码看看 你在LINUX还是windows啊
怎样设置编码啊

,我改了这个,本地测试已经ok了,不明白了。。。设置编码看看 帮助我解决  我分全给你了

,我改了这个,本地测试已经ok了,不明白了。。。设置编码看看 编码确实有问题 文件名中的“+”号都变空白了

header('Content-Disposition: attachment; filename='.urlencode($file).'');

       if(!is_dir($root.$file))
   {

echo "".$root.$file."
";

       }
   }
把链接里的url参数文件名也做下url编码就可以了

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn