注册 | 登录
欢迎注册会员

当前位置:首页 > 狗万 怎么玩 > PHP技术 > 正文

php中使用head进行二进制流输出,让用户下载rar等文件的方法

来源:程序人生 【 】 浏览:781 添加日期:2016-09-14 21:30:27 我要评论(0)

在PHP的手册中,有如下的方法,可以让用户方便的下载rar或者其他类似的附件形式,不过这里居然涉及到了编码的问题,是这样的,我要传输一个rar附件给用户,首先是rar文件已经存放到服务器上面了,在给文件传输过程中取名的问题,总是在IE下面到用户端的时候,文件名是乱码,导致了文件类型无法识别,有点奇怪,文件名是UTF-8编码的,比如:“程序人生.rar”,是从数据库中获取出来的,输出转化为$filename = iconv('utf-8', 'gbk', $filename);,传递到用户端的时候,文件名就正常了。


function?downloadFile(?$fullPath?){?
??//?Must?be?fresh?start?
??if(?headers_sent()?)?
????die('Headers?Sent');?
??//?Required?for?some?browsers?
??if(ini_get('zlib.output_compression'))?
????ini_set('zlib.output_compression',?'Off');?
??//?File?Exists??
??if(?file_exists($fullPath)?){?
????
????//?Parse?Info?/?Get?Extension?
????$fsize?=?filesize($fullPath);?
????$path_parts?=?pathinfo($fullPath);?
????$ext?=?strtolower($path_parts["extension"]);?
????
????//?Determine?Content?Type?
????switch?($ext)?{?
??????case?"pdf":?$ctype="application/pdf";?break;?
??????case?"exe":?$ctype="application/octet-stream";?break;?
??????case?"zip":?$ctype="application/zip";?break;?
??????case?"rar":?$ctype="application/zip";?break;?
??????case?"doc":?$ctype="application/msword";?break;?
??????case?"xls":?$ctype="application/vnd.ms-excel";?break;?
??????case?"ppt":?$ctype="application/vnd.ms-powerpoint";?break;?
??????case?"gif":?$ctype="image/gif";?break;?
??????case?"png":?$ctype="image/png";?break;?
??????case?"jpeg":?
??????case?"jpg":?$ctype="image/jpg";?break;?
??????default:?$ctype="application/force-download";?
????}?
????header("Pragma:?public");?//?required?
????header("Expires:?0");?
????header("Cache-Control:?must-revalidate,?post-check=0,?pre-check=0");?
????header("Cache-Control:?private",false);?//?required?for?certain?browsers?
????header("Content-Type:?$ctype");?
????header("Content-Disposition:?attachment;?filename="".basename($fullPath)."";"?);?
????header("Content-Transfer-Encoding:?binary");?
????header("Content-Length:?".$fsize);?
????ob_clean();?
????flush();?
????readfile(?$fullPath?);?
??}?else?
????die('File?Not?Found');?
}

?



你浏览的文章是 - 《php中使用head进行二进制流输出,让用户下载rar等文件的方法》!
文章出处:https://www.procedurelife.com/content/akkjde.html
0% (0)
0% (0)
评论0
头像 游客
1 2