虽然我分不多,但是我还是将给那么多,因为这个问题确实郁闷我黑久了,虽然未必是很难的问题。
我用下面这段话来实现文件的下载:
$file="c:/csdn.rar";
$dest="csdn.rar";
down_file($file,$dest);
function down_file($file,$dest){
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/x-php");
header("Content-Disposition: attachment; filename=$dest" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
readfile($file);
}
?>
可以下载,但是下载之后的文件打开的时候就出问题,如果是文本文档就没有问题,如果是rar文件就说文件的标头被破坏了,exe文件它直接性的没有任何反应。。
哪位大哥解决了问题,100分就拿去吧。。
---------------------------------------------------------------
---------------------------------------------------------------
$file="c:/csdn.rar";
$dest="csdn.rar";
down_file($file,$dest);
function down_file($file,$dest){
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/x-zip");
header("Content-Disposition: attachment; filename=$dest" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
readfile($file);
}
?>
---------------------------------------------------------------
不会吧,我的下载就是用的echo fread($file,filesize($file_name));方式做的
这个有15M,虽然没有你说的20M大,但也足够说明问题了吧,而且还可以断点续传:
http://www.mistruster.com/download.php?type=soft&id=2
//...
case "SOFT":
$sql = "...";
//...
$file = fopen($file_name,"r");
Header("Content-type: application/octet-stream");
Header("Content-Length: ".filesize($file_name));
Header("Accept-Ranges: bytes");
header('Pragma: public');
echo fread($file,filesize($file_name));
fclose($file);
//...
我没用'rb'方式打开文件,但下载后.exe文件一样可以执行,并没有影响什么
---
RedHat Linux AS PHP 4.3.8 Apache 1.3.28