php文件下载的问题,下载之后文件打不开,求回答

Scchary 发布于 2013/12/29 20:05
阅读 810
收藏 0
PHP

@南湖船老大 你好,想跟你请教个问题:

问您个问题啊。。

php下载文件的问题,代码如下:感觉也没什么问题啊,文件也可以正常下载下来,但是下载下来之后,文件不能打开,说是“文件可能已经损坏或过大”,并且如果下载的MP3文件的话,下载下来的文件会没有后缀名,如果是MP4文件的话下载下来有后缀,但是也打不开说是“不是标准的mp4格式”

<?php
function file_down($file_name){
$file_path=$_SERVER['DOCUMENT_ROOT']."/php_operation/011http/003http_file_down/exe/".$file_path."/".iconv("utf-8","gb2312",$file_name);;
$file_type=explode(".",$file_name);
//echo $file_type[count($file_type)-1];
switch($file_type[count($file_type)-1]){
case "png":$file_path="img";
break;
case "mp3":$file_path="music";
break;
case "mp4":$file_path="video";
break;
}
//echo $file_path;
if(file_exists($file_path)){

//echo $file_size;
$fp=fopen($file_path,"r");
$file_size=filesize($file_path);
//告诉浏览器返回的是文件
header("Content-type: application/octet-stream");
//按照字节的方式返回
header("Accept-Ranges: bytes");
//所返回的文件的具体大小
header("Accept-Length: $file_size");
//在客户端弹出对话框
header("Content-Disposition: attachment; filename=".$file_name);
$buffer=1024;
$file_count=0;
while(!feof($fp)&&($file_size-$file_count>0)){
$file_data=fread($fp,$buffer);
$file_count+=$buffer;
echo $file_data;
}
fclose($fp);
}else{
echo "文件不存在,不能下载";
}
return;

}
file_down("达拉.png");
?>

加载中
0
redsheep
redsheep
header("Content-Transfer-Encoding: binary");
返回顶部
顶部