$file_path = $file_dir.'/'.$file_name; //要下载的文件路径、名

解决方案 »

  1.   

    $source_file_name="put.rar";    //下载的源文件名
    $save_file_name="get.rar";      //保存为的文件名
    $file_path="UploadFiles/";      //源文件名的路径
    $file_type=substr( strrchr( $source_file_name, "." ), 1 );  //取得文件类型,也就是后缀
    $file_size=filesize($file_path.$save_file_name);            //取得文件大小
    Header("Content-type: application/x-".$file_type);          //文件类型
    Header("Accept-Ranges: bytes");                             //二进制传输方式
    Header("Accept-Length: ".$file_size);                       //文件大小
    header("Content-Description: PHP3 Generated Data");        Header("Content-Disposition: attachment; filename=".$save_file_name);    //保存为的文件名
    readfile(ROOT_PATH.'UploadFiles/'.$save_file_name]);                     //开始传输
    //你的情况是$save_file_name没有设好,
    //还要注意,在执行下载前,不可以有任何的输出,就是echo之类的语句,因为所有的输出都会加到下
    //载文件中,而不会在浏览器中显示,所以你的下载的东西多了不该要东西,就是这个原因,//我这边有一个现成的例子,自己写的,要的话给我邮箱
      

  2.   

    程序是没有问题,$file_path也就是文件名和路径比如下载/tmp/1.dat文件,$file_pathe="/tmp/1.dat", 现在问题就是在流输出过程中,因为调用了echo。所以,下载的文件中出现了像<br>之类的html语言,还有头也是html语言,比如增加了:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><LINK href='../../images/style_new.css' type=text/css rel=stylesheet><BODY leftMargin=0 topMargin=0 background='../../images/back_new.gif' ><table style="BACKGROUND-REPEAT: repeat-x" cellSpacing=0 cellPadding=0 width=785align=left bgColor=#ffffff background="../../images/back_new2.gif" border=0> <tr> <td align=center valign=middle height=435>
    这些东西,文件尾也是。我应该怎么解决,高手快点指导啊!
      

  3.   

    如果在下载中一定要用到echo的话,建议尝试用框架解决,
      

  4.   

    谢谢楼上的,我已经解决了下载文件中多余字节的问题,就像你所说的那样执行下载前和执行下载后有了echo语句,现在又有个新问题,就是我调用了上面我所说的函数download()可以下载成功,但是我想在下载完毕后自动跳转到一个新的链接,代码是:
    download($file_path, $source_name, $file_name);
    header("Location:dumpsucceed.php");
    但是发现它不再执行下载,而直接跳转到dumpsucceed.php上,把header()这行屏蔽掉后,可以成功的下载,是什么原因, 
    谢谢!
      

  5.   

    谢谢, tovy(紫云) 的方法确实不错,可以解决刷新的问题。不知还有没有其他更好的方法。