利用ThinkPHP怎么将本地文件打包成zip文件

  介绍

本篇文章为大家展示了利用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文件