> 백엔드 개발 > PHP 튜토리얼 > PHP下载,封装后JPG多200多字节,压缩文件没有问题

PHP下载,封装后JPG多200多字节,压缩文件没有问题

WBOY
풀어 주다: 2016-06-20 12:43:00
원래의
1007명이 탐색했습니다.

<?phprequire 'Bashiliu.Class.php';header("Content-type:text/html;charset=utf-8");//接受要下载的文件名字//$file_name=$_REQUEST['file_name'];down_file("3.rar","/");	?>
로그인 후 복사

Bashiliu.Class.php文件
<?php        function down_file($file_name,$file_sub_dir){	//死去活来,演示下载一个图片.	//如果文件是中文.	//$file_name='xx.jpg';	//原因 php文件函数,比较古老,需要对中文转码 gb2312	$file_name=iconv("utf-8","gb2312",$file_name);	//相对路径	//$file_path="./down/".$file_name;	//绝对路径	$file_path=$_SERVER['DOCUMENT_ROOT'].$file_sub_dir.$file_name;	//如果你希望绝对路径	//1.打开文件	if(!file_exists($file_path)){	echo "文件不存在!";	return ;	}	$fp=fopen($file_path,"r");	//获取下载文件的大小	$file_size=filesize($file_path);	if($file_size>10*1024*1024){	echo "<script language='javascript'>window.alert('过大')</script>";	return ;	}	//返回的文件	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);	}?>
로그인 후 복사

源文件和下载下来的txt文件对比


回复讨论(解决方案)

已经找到原因了
http://bbs.csdn.net/topics/390485077

不是上面的原因

确认程序文件没有 BOM 头,没有多余的空格空行
$fp=fopen($file_path,"r b"); //要用二进制方式打开

谢谢版主了,果然是空行的原因

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿