我使用PHP的readfile函数来下载文件,但是下载的文件并不是原文件的内容。下载代码如下:
header("content-disposition:attachment;filename=".basename($filename));
header("content-length:".filesize($filename));
readfile($filename);
而下载的文件里面都是“<!DOCTYPE html”的东西,请问这是什么原因啊?

解决方案 »

  1.   

    检查一下文件是否存在BOM头
      

  2.   

    请问这段PHP代码是否有错误?谢谢大神
      

  3.   

    最前加一句
    ob_clean(); 試試。
      

  4.   

    没有声明content_type导致的
      

  5.   


                    $filename = basename($plan['url']);
                    if($this->is_ie()) $filename = rawurlencode($filename);
                    $filetype = $this->fileext($filename);
                    $filesize = sprintf("%u", filesize($plan['url']));
                    if(ob_get_length() !== false) @ob_end_clean();
                    header('Pragma: public');
                    header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
                    header('Cache-Control: no-store, no-cache, must-revalidate');
                    header('Cache-Control: pre-check=0, post-check=0, max-age=0');
                    header('Content-Transfer-Encoding: binary');
                    header('Content-Encoding: none');
                    header('Content-type: '.$filetype);
                    header('Content-Disposition: attachment; filename="'.$filename.'"');