$id=$_GET['download']; //从现在页面获取该文件数据库中的ID
   $conn=mysql_connect('localhost','root','');
/* if(!$conn) 
{
   echo('<b>数据库连接失败!</b>');
   exit;
}
else echo '<b>连接成功!</b>';*/
    $flag=mysql_select_db('laborder' ,$conn);
$sql="select * from files where files_id=$id";
 mysql_query("set names gbk");
    $result = mysql_query($sql,$conn); 
 $lists=mysql_fetch_array($result);
     $file_name=$lists["files_name"];// 获取文件名
 $file_dir="uploadfiles/";//标出文件所在目录
 
$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;

解决方案 »

  1.   

    读取文件内容后把编码转为GBK再输出
      

  2.   

    $contents=fread($file,filesize($file_dir . $file_name));
    echo iconv("UTF-8", "GBK",$contents);
    fclose($file);  
    exit;
      

  3.   

    不乱才有问题!把文件存为没有BOM的UTF8格式
      

  4.   

    按照你说的方法,其他文件显示都是正常的,就是文件名称带有“——”或“—”的下载不了
    如“个人简历—王强.doc” 这是怎么回事啊 难道是“—”出现在文件名中就不行吗???