博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
压缩服务器中的文件夹,并下载到电脑
阅读量:5147 次
发布时间:2019-06-13

本文共 5811 字,大约阅读时间需要 19 分钟。

1.先把文件保存到服务器上传的文件夹中

例子:

1 public function downPicFile($url,$filename,$pic_name){2         $file_path='./CUSTOM/'.$filename;//地址3         $path = $file_path.'/'.$pic_name;//地址对应的图片名称4         if(!file_exists($file_path)){5             @mkdir($file_path,0777);6         }7         $data = file_get_contents($url);//获取图片8         @file_put_contents($path, $data);//保存图片9     }
View Code

2.thinkphp的类 FileToZip.class.php

1 
currentdir=$curpath;//返回当前目录 13 $this->savepath=$savepath;//返回当前目录 14 } 15 //遍历目录 16 public function scandir($filepath){ 17 if (is_dir($filepath)){ 18 $arr=scandir($filepath); 19 foreach ($arr as $k=>$v){ 20 $this->fileinfo[$v][]=$this->getfilesize($v); 21 } 22 }else { 23 echo ""; 24 } 25 } 26 /** 27 * 返回文件的大小 28 * 29 * @param string $filename 文件名 30 * @return 文件大小(KB) 31 */ 32 public function getfilesize($fname){ 33 return filesize($fname)/1024; 34 } 35 /** 36 * 压缩文件(zip格式) 37 */ 38 public function tozip($items){ 39 $zip=new ZipArchive(); 40 $zipname=date('Y-m-d'); 41 if (!file_exists($zipname)){ 42 $zip->open($savepath.$zipname.'.zip',ZipArchive::OVERWRITE);//创建一个空的zip文件 43 for ($i=0;$i
addFile($this->currentdir.'/'.$items[$i],$items[$i]); 45 } 46 $zip->close(); 47 $dw=new download($zipname.'.zip',$savepath); //下载文件 48 $dw->getfiles(); 49 unlink($savepath.$zipname.'.zip'); //下载完成后要进行删除 50 } 51 } 52 } 53 /** 54 * 下载文件 55 * 56 */ 57 class download{ 58 protected $_filename; 59 protected $_filepath; 60 protected $_filesize;//文件大小 61 protected $savepath;//文件大小 62 public function __construct($filename,$savepath){ 63 $this->_filename=$filename; 64 $this->_filepath=$savepath.$filename; 65 } 66 //获取文件名 67 public function getfilename(){ 68 return $this->_filename; 69 } 70 //获取文件路径(包含文件名) 71 public function getfilepath(){ 72 return $this->_filepath; 73 } 74 //获取文件大小 75 public function getfilesize(){ 76 return $this->_filesize=number_format(filesize($this->_filepath)/(1024*1024),2);//去小数点后两位 77 } 78 //下载文件的功能 79 public function getfiles(){ 80 //检查文件是否存在 81 if (file_exists($this->_filepath)){ 82 //打开文件 83 $file = fopen($this->_filepath,"r"); 84 //返回的文件类型 85 Header("Content-type: application/octet-stream"); 86 //按照字节大小返回 87 Header("Accept-Ranges: bytes"); 88 //返回文件的大小 89 Header("Accept-Length: ".filesize($this->_filepath)); 90 //这里对客户端的弹出对话框,对应的文件名 91 Header("Content-Disposition: attachment; filename=".$this->_filename); 92 //修改之前,一次性将数据传输给客户端 93 echo fread($file, filesize($this->_filepath)); 94 //修改之后,一次只传输1024个字节的数据给客户端 95 //向客户端回送数据 96 $buffer=1024;// 97 //判断文件是否读完 98 while (!feof($file)) { 99 //将文件读入内存100 $file_data=fread($file,$buffer);101 //每次向客户端回送1024个字节的数据102 echo $file_data;103 }104 fclose($file);105 }else {106 echo "
";107 }108 }109 }
View Code

3.调用类文件打包文件夹

1 public function downZip($file){ 2         $cur_file = './CUSTOM/'.$file; 3         $save_path = './CUSTOM/'.$file; 4         import('Vendor.FileZip.FileToZip',LIB_PATH,'.class.php'); 5          6         // 打包下载 7         $handler = opendir($cur_file); //$cur_file 文件所在目录 8         $download_file = array(); 9         $i = 0;10         while( ($filename = readdir($handler)) !== false ) {11             if($filename != '.' && $filename != '..') {12                 $download_file[$i++] = $filename;13             }14         }15         closedir($handler);16         $scandir=new \traverseDir($cur_file,$save_path); //$save_path zip包文件目录17         $scandir->tozip($download_file);18     }
View Code

 4.删除文件夹及文件

1 public function deldir($filename){ 2         $dir = './images/'.$filename; 3         if(file_exists($dir)){ 4             $dh=opendir($dir);//先删除目录下的文件: 5             while ($file=readdir($dh)) { 6                 if($file!="." && $file!="..") { 7                     $fullpath=$dir."/".$file; 8                     if(!is_dir($fullpath)) { 9                         unlink($fullpath);10                     } else {11                         deldir($fullpath);12                     }13                 }14             }15             closedir($dh);16             //删除当前文件夹:17             if(rmdir($dir)) {18                 return true;19             } else {20                 return false;21             }22         }23     }

 5.

$ch = curl_init(); //初始化CURL句柄            curl_setopt($ch, CURLOPT_URL, $url); //设置请求的URL            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0 );//可延迟等待时间10            curl_setopt($ch, CURLOPT_NOSIGNAL, 1);//使用毫秒计时            curl_setopt($ch, CURLOPT_TIMEOUT_MS , 200000 );//超时时间100,测试延迟改为1            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); //设置请求方式            curl_setopt($ch, CURLOPT_HTTPHEADER, $myHeaders);            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//设置提交的字符串            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);                $resultjson = curl_exec($ch);//执行预定义的CURL            curl_close($ch);                $arr = json_decode($resultjson,true);
View Code

 

转载于:https://www.cnblogs.com/heyang71212/p/4633438.html

你可能感兴趣的文章
2.微信开发原理
查看>>
洛谷 P1309 瑞士轮 题解
查看>>
我踩过的听过的那些坑
查看>>
关于rk3288烧写后不能启动的问题
查看>>
关于C++的operator的学习笔记
查看>>
python(函数初识)
查看>>
[转]使用 System.IO 和 Visual C# .NET 读取文本文件
查看>>
ASP.NET事件模型
查看>>
window 常用cmd 命令
查看>>
NSString类-字符串
查看>>
MySql 游标笔记
查看>>
vim 穿越时空
查看>>
如何管理Entity Framework中得事务
查看>>
solrcloud线上创建collection,修改默认配置
查看>>
制作ubuntu16.04 自动安装iso镜像
查看>>
数据清洗
查看>>
我是如何自学Android,资料分享(2015 版)
查看>>
[Application]Ctrl+C终止程序代码
查看>>
for循环小例题
查看>>
C++ Win32 遍历窗口
查看>>