介绍
本篇文章为大家展示了利用ThinkPHP怎么将本地文件打包成zip文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
首先,将FileToZip.class文件放到ThinkPHP/扩展/库/ORG/Util/文件夹中,FileToZip.class。php为zip下载类,其详细代码如下:
& lt; php ?/* * ,*压缩下载类文件 ,*遍历目录,打包成zip格式 ,*/class traverseDir { ,public currentdir;美元//当前目录 ,public 文件名;美元//文件名 ,public fileinfo;美元//用于保存当前目录下的所有文件名和目录名以及文件大小 ,public savepath美元; ,public function  __construct (curpath, savepath美元){ 这个美元才能→currentdir=$ curpath;//返回当前目录 这个美元才能→savepath=$ savepath;//返回当前目录 ,}, ,//遍历目录 ,public function  scandir (filepath美元){ if 才能;(is_dir (filepath美元)){ ,,,arr=scandir美元($ filepath); ,,,foreach (arr 美元;as $ k=祝辞美元v) { ,,,,这个→美元fileinfo美元[v][]=$这→getfilesize (v)美元; ,,,} ,,}else { ,,,echo “& lt; script>警报(& # 39;当前目录不是有效目录& # 39;);& lt;/script>“; ,,} ,}/* * *,才能返回文件的大小 ,* *,才能@param string filename 美元;文件名 *,才能@return 文件大小(KB) ,*/美元,public function  getfilesize(帧){ return 才能;文件大小(帧)/1024; ,}/* * *,才能压缩文件(zip格式) ,*/,public function  tozip(项目){, 邮政=new 美元才能ZipArchive (); 美元才能zipname=日期(& # 39;YmdHis& # 39;时间()); if 才能;(! file_exists (zipname美元)){ zip→美元,才能打开(savepath。美元zipname强生# 39;. zip # 39;, ZipArchive::覆盖);//创建一个空的压缩文件 ,才能for (i=0; i<美元计数(美元);美元我+ +){ ,,,$ zip→addFile ($ this→currentdir强生# 39;/& # 39;。项目[我]美元美元,美元项目[$ i]); ,,} 美元,才能zip→关闭(); ,,dw美元=new 下载(美元zipname强生# 39;. zip # 39;, savepath美元);,//下载文件 ,,dw→美元getfile (); ,,分开(savepath。美元zipname强生# 39;. zip,),,//下载完成后要进行删除, ,,} ,} }/* * ,*下载文件 ,* ,*/下载{class ,protected _filename美元; ,protected _filepath美元; ,protected _filesize;美元//文件大小 ,protected savepath;美元//文件大小 ,public function  __construct(文件名,savepath美元){ 这个美元才能→_filename=$文件名; 这个美元才能→_filepath=savepath。美元文件名; ,} ,//获取文件名 ,public function  getfilename () { return 才能;这→美元_filename; ,} ,//获取文件路径(包含文件名) ,public function  getfilepath () { return 才能;这→美元_filepath; ,} ,//获取文件大小 ,public function  getfilesize () { return 才能;这→美元_filesize=number_format(文件大小($ this→_filepath)/(1024 * 1024), 2);//去小数点后两位 ,} ,//下载文件的功能 ,public function  getfile () {//检才能查文件是否存在 if 才能;(file_exists ($ this→_filepath)) { ,,//打开文件 ,,file 美元;=,fopen ($ this→_filepath,“r"); ,,//返回的文件类型 ,,头(“内容类型:应用程序/octet-stream"); ,,//按照字节大小返回 ,,头(“Accept-Ranges: bytes"); ,,//返回文件的大小 ,,头(“Accept-Length:,“.filesize ($ this→_filepath)); ,,//这里对客户端的弹出对话框,对应的文件名 ,,头(“附加项:附件;,文件名=啊? this→_filename); ,,//修改之前,一次性将数据传输给客户端 ,,echo 从文件中读($文件,文件大小($ this→_filepath)); ,,//修改之后,一次只传输1024个字节的数据给客户端 ,,//向客户端回送数据 ,,缓冲=1024美元;//,,//判断文件是否读完 ,,while (! feof(文件)美元),{ ,,,//将文件读入内存 ,,,$ file_data=https://www.yisu.com/zixun/fread(文件,缓冲美元);//每次向客户端回送1024个字节的数据 echo $ file_data; } 文件关闭($文件); 其他}{ 回声”<脚本>警报('对不起,您要下载的文件不存在的);> 脚本”; } } }利用ThinkPHP怎么将本地文件打包成zip文件