PHP实现文件下载详解
《PHP实现文件下载详解》要点: PHP编程1、php下载原理图 PHP编程 PHP编程2、文件下载源码:
代码如下:
<?php $file_name="哈哈.jpg";//需要下载的文件 $file_name=iconv("utf-8","gb2312","$file_name"); $fp=fopen($file_name,"r+");//下载文件必须先要将文件打开,写入内存 if(!file_exists($file_name)){//判断文件是否存在 ??? echo "文件不存在"; ??? exit(); } $file_size=filesize("a.jpg");//判断文件大小 //返回的文件 Header("Content-type: application/octet-stream"); //依照字节格式返回 Header("Accept-Ranges: bytes"); //返回文件大小 Header("Accept-Length: ".$file_size); //弹出客户端对话框,对应的文件名 Header("Content-Disposition: attachment; filename=".$file_name); //防止服务器瞬时压力增大,分段读取 $buffer=1024; while(!feof($fp)){ ??? $file_data=fread($fp,$buffer); ??? echo $file_data; } //关闭文件 fclose($fp); ?> PHP编程3、文件编码问题解决方法: PHP编程 如果文件名是中文,php的函数不能识别中文文件名,一般如果程序编码为utf-8,php的函数比较古老,只能识别gb2312编码的中文,所以把中文用iconv(“原编码”,”要转成的编码”,”要转码的字符串”)函数可以转码. PHP编程 比如,把一个字符串从utf-8转码为gb2312 PHP编程 $file_name=iconv(“utf-8”,”gb2312”,”$file_name”); PHP编程4使用header方式实现文件下载源码 PHP编程附上整理的下载办法,已封装好,可直接使用:
代码如下:
???? function download_by_path($path_name,$save_name){ ???????? ob_end_clean(); ???????? $hfile = fopen($path_name,"rb") or die("Can not find file: $path_namen"); ???????? Header("Content-type: application/octet-stream"); ???????? Header("Content-Transfer-Encoding: binary"); ???????? Header("Accept-Ranges: bytes"); ???????? Header("Content-Length: ".filesize($path_name)); ???????? Header("Content-Disposition: attachment; filename="$save_name""); ???????? while (!feof($hfile)) { ??????????? echo fread($hfile,32768); ???????? } ???????? fclose($hfile); ??? } PHP编程以上就是本文的全部内容了,小伙伴们是否对php实现文件下载有了初步的认识了呢,本身多做做尝试,结合本文给出的简单例子,让本身的项目更完善吧. 欢迎参与《PHP实现文件下载详解》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |