1.先把文件保存到服務器上傳的文件夾中php
例子:thinkphp
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 }
2.thinkphp的類 FileToZip.class.phpjson
1 <?php 2 /** 3 * zip下載類文件 4 * 遍歷目錄,打包成zip格式 5 */ 6 class traverseDir{ 7 public $currentdir;//當前目錄 8 public $filename;//文件名 9 public $fileinfo;//用於保存當前目錄下的全部文件名和目錄名以及文件大小 10 public $savepath; 11 public function __construct($curpath,$savepath){ 12 $this->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 "<script>alert('當前目錄不是有效目錄');</script>"; 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<count($items);$i++){ 44 $zip->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 "<script>alert('對不起,您要下載的文件不存在');</script>"; 107 } 108 } 109 }
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 }
4.刪除文件夾及文件app
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.curl
$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);