PHP文件下载的小实例
这个文件下载实例做得非常的详细他是结合header函数与while fread函数把文件分断读出来然后再发送到客户端了,算得上一个标准的文件下载实例。
一个PHP文件下载的小实例
/*====================================================== $FileName 为文件名称,必传 $FilePath 为文件路径.选填,可以为相对路径或者绝对路径 路径只能由英文跟数据组成,不能带有中文 如有问题 欢迎联系博主指出 ======================================================*/ 代码如下 复制代码 <?php header( "Content-type: text/html;charset=utf-8" ); if ( strlen ( $FileName )<=3){ echo "下载失败:你所以下载的文件信息有误" ; return ;} $FileName =iconv( "utf-8" , "gb2312" , $FileName ); //进行文件名格式转换,以防中文乱码 //开始判断路径 if (! is_null ( $FilePath )&& strlen ( $FilePath )>1){ if ( substr ( $FilePath ,0,1)== '/' ){ //判断是否为绝对路径 $FilePath = $_SERVER [ 'DOCUMENT_ROOT' ]. $FilePath ; } if ( substr ( $FilePath ,-1)!= "/" ){ //检查最后是否为 / 结尾 $FilePath = $FilePath . '/' ; } if ( is_numeric ( strpos ( $FilePath , ":\" ))){ //检查是否为绝对路径 $FilePath = str_replace ( "/" , "\" , $FilePath ); } } elseif ( strlen ( $FilePath )==1&& $FilePath != "/" ){ $FilePath = $FilePath . "/" ; } else { $FilePath = "" ; } if (! file_exists ( $FilePath . $FileName )){ echo "下载失败:所要下载的文件未找到" ; return ; } /*================================================ 发送下载相关的头部信息 =================================================*/ header( "Content-type: application/octet-stream" ); header( "Accept-Ranges: bytes" ); //按照字节大小返回 header( "Accept-Length: $FileSize" ); //返回文件大小 header( "Content-Disposition: attachment; filename=" . $FileName ); //这里客户端的弹出对话框,对应的文件名 /*================================================ 开始下载相关 =================================================*/ $FileSize = filesize ( $FilePath . $FileName ); $File = fopen ( $FilePath . $FileName , "r" ); //打开文件 $FileBuff =512; while ( $FileSize >=0){ $FileSize -= $FileBuff ; echo fread ( $File , $FileBuff ); } fclose( $File ); } ?>总结: 本下载实例并且支持中文文名了,在文件开头就进行了uft8编码转换了.
查看更多关于PHP文件下载的小实例 - php上传下载的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did29399