首页 » 网站推广 » php类包技巧_PHP实现下载与压缩文件的方法的封装与整理

php类包技巧_PHP实现下载与压缩文件的方法的封装与整理

访客 2024-11-23 0

扫一扫用手机浏览

文章目录 [+]

此方法为大文件下载的实现,纵然几个G也可实现本地的下载。
可以测试一下,或者等你从中改进...

function downloadFile($filename){ //获取文件的扩展名 $allowDownExt=array ( 'rar','zip','png','txt','mp4','html'); //获取文件信息 $fileext=pathinfo($filename); //检测文件类型是否许可下载 if(!in_array($fileext['extension'],$allowDownExt)) { return false; } //设置脚本的最大实行韶光,设置为0则无韶光限定 set_time_limit(0); ini_set('max_execution_time', '0'); //通过header()发送头信息 //由于不知道文件是什么类型的,见告浏览器输出的是字节流 header('content-type:application/octet-stream'); //见告浏览器返回的文件大小类型是字节 header('Accept-Ranges:bytes'); //得到文件大小 //$filesize=filesize($filename);//(此方法无法获取到远程文件大小) $header_array = get_headers($filename, true); $filesize = $header_array['Content-Length']; //见告浏览器返回的文件大小 header('Accept-Length:'.$filesize); //见告浏览器文件作为附件处理并且设定终极下载完成的文件名称 header('content-disposition:attachment;filename='.basename($filename)); //针对大文件,规定每次读取文件的字节数为4096字节,直接输出数据 $read_buffer=4096; $handle=fopen($filename, 'rb'); //总的缓冲的字节数 $sum_buffer=0; //只要没到文件尾,就一贯读取 while(!feof($handle) && $sum_buffer<$filesize) { echo fread($handle,$read_buffer); $sum_buffer+=$read_buffer; } //关闭句柄 fclose($handle); exit;}

三,PHP扩展类ZipArchive实现压缩Zip文件和文件打包下载

php类包技巧_PHP实现下载与压缩文件的方法的封装与整理

这是一个类,封装了方法,也可以考试测验一下!

php类包技巧_PHP实现下载与压缩文件的方法的封装与整理
(图片来自网络侵删)

<?php/ 关于文件压缩和下载的类 @author tycell @version 1.0 /class zip_down{ protected $file_path; / 布局函数 @param [string] $path [传入文件目录] / public function __construct($path){ $this->file_path=$path; //要打包的根目录 } / 入口调用函数 @return [type] [以二进制流的形式返回给浏览器下载到本地] / public function index(){ $zip=new ZipArchive(); $end_dir=$this->file_path.date('Ymd',time()).'.zip';//定义打包后的包名 $dir=$this->file_path; if(!is_dir($dir)){ mkdir($dir); } if($zip->open($end_dir, ZipArchive::OVERWRITE) === TRUE){ ///ZipArchive::OVERWRITE 如果文件存在则覆盖 $this->addFileToZip($dir, $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的工具通报给方法 $zip->close(); } if(!file_exists($end_dir)){ exit(\"大众无法找到文件\"大众); } header(\"大众Cache-Control: public\公众); header(\"大众Content-Description: File Transfer\公众); header(\"大众Content-Type: application/zip\"大众); //zip格式的 header('Content-disposition: attachment; filename='.basename($end_dir)); //文件名 header(\"大众Content-Transfer-Encoding: binary\"大众); //见告浏览器,这是二进制文件 header('Content-Length:'.filesize($end_dir)); //见告浏览器,文件大小 @readfile($end_dir); $this->delDirAndFile($dir,true);//删除目录和文件 unlink($end_dir);////删除压缩包 } / 文件压缩函数 须要开启php zip扩展 @param [string] $path [路径] @param [object] $zip [扩展ZipArchive类工具] / protected function addFileToZip($path, $zip){ $handler = opendir($path); while (($filename=readdir($handler)) !== false) { if ($filename!= \公众.\"大众 && $filename!=\"大众..\公众){ if(!is_dir($filename)){ $zip->addFile($path.\公众/\"大众.$filename,$filename); //第二个参数避免将目录打包,可以不加 } } } @closedir($path); } / 删除文件函数 @param [string] $dir [文件目录] @param boolean $delDir [是否删除目录] @return [type] [description] / protected function delDirAndFile($path,$delDir=true){ $handle=opendir($path); if($handle){ while(false!==($item = readdir($handle))){ if($item!=\"大众.\"大众&&$item!=\"大众..\"大众){ if(is_dir($path.'/'.$item)){ $this->delDirAndFile($path.'/'.$item, $delDir); }else{ unlink($path.'/'.$item); } } } @closedir($handle); if($delDir){return rmdir($path);} }else{ if(file_exists($path)){ return unlink($path); }else{ return FALSE; } } }}

标签:

相关文章

C语言中的附带值,详细介绍其原理与运用

C语言作为一门经典的编程语言,以其简洁、高效、灵活的特点受到了广泛的应用。在C语言中,附带值是一个重要的概念,它涉及到变量的存储和...

网站推广 2024-12-26 阅读0 评论0

C语言中的类概念,面向对象编程的基石

随着计算机技术的不断发展,编程语言也在不断地演变。从早期的过程式编程到现代的面向对象编程,编程范式经历了翻天覆地的变化。C语言作为...

网站推广 2024-12-26 阅读0 评论0

IT9600,引领未来科技,重塑智能时代

随着科技的飞速发展,人工智能、大数据、云计算等新兴技术逐渐成为推动社会进步的重要力量。在我国,IT9600作为新一代智能计算芯片,...

网站推广 2024-12-26 阅读0 评论0

ITDesk,引领智慧办公新时代

随着科技的飞速发展,我国各行各业都在经历着前所未有的变革。在众多变革中,智慧办公已成为企业提升工作效率、降低成本、增强竞争力的重要...

网站推广 2024-12-26 阅读0 评论0

ITGurl,解码互联网时代女性的力量

在互联网飞速发展的时代,女性的力量愈发凸显。她们在各个领域崭露头角,成为推动社会进步的重要力量。而ITGurl,一个代表着女性在互...

网站推广 2024-12-26 阅读0 评论0