header("Content-Type: application/octet-stream");  
提供下载歌曲时这样应该不行吧?你也没有说明服务器环境,建议读文件操作时使用"rb"模式!

解决方案 »

  1.   

    你看下下来的文件大小,估计文件尾确几个字节,检查你的while循环
      

  2.   

    我是apache2+mysql+php4,在windows环境下
    下载的文件与原来的文件相比,右击看属性:下载的文件大小(字节单位)比原文件一点,占用空间一样。
      

  3.   

    用rb也不行,while循环也没有错,我用readfile试试了
      

  4.   

    问题还没有解决,请大家帮忙,下载的文件比原文件大几个字节 <?php
      
      $sql = "select * from $tb_software where id='$id'";
      $result = mysql_query($sql)  or die(mysql_error()); 
      $array = mysql_fetch_array($result);
      $filepath = $array[filepath];
      $filename = $array[filename];
      $filesize = $array['filesize'];
      
      if   (!file_exists($filepath)&&is_readable($filepath)) {   //检查文件是否存在   
      echo   "文件找不到";   
      exit;   
      }   else   {   
       //   输入文件标签   
      header("Content-Type: application/octet-stream");  
      header("Accept-Ranges: bytes"); 
      header("Accept-Length:". $filesize); 
      header("Content-Disposition: attachment;filename=".$filename);     
      $fp = fopen($filepath,"rb"); 
      $buffer_size = 1024; 
      $cur_pos = 0;     
      while(!feof($fp)&&(($filesize-$cur_pos)>$buffer_size)) 
        { 
            $buffer = fread($fp,$buffer_size); 
            echo $buffer; 
            $cur_pos += $buffer_size; 
        }     
      $buffer = fread($fp,$filesize-$cur_pos); 
      echo $buffer; 
      fclose($fp); 
      exit;}  
    ?>
      

  5.   

    文件地址对吗?
    if (fileexists($filepath . DIRECTORY_SEPARATOR . $filename)) {
       exit('不存在');
    }
      

  6.   

    $buffer_size = 1024; 
      $cur_pos = 0;     
      while(!feof($fp)) 
        { 
            $buffer = fread($fp,$buffer_size); 
            echo $buffer; 
        }     
      fclose($fp);