Heim  >  Artikel  >  Backend-Entwicklung  >  (高分)为什么这段代码不能实现文件下载

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

WBOY
WBOYOriginal
2016-06-23 14:39:43885Durchsuche

高分悬赏:
为什么我这段代码不能实现文件下载,在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编码就可以了

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn