亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP生成壓縮文件實例

2024-05-04 23:31:00
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了PHP生成壓縮文件實例,本文直接給出實現代碼,需要的朋友可以參考下

大概需求:

每一個訂單都有多個文件附件,在下載的時候希望對當前訂單的文件自動打包成一個壓縮包下載

細節需求:當前訂單號_年月日+時間.zip 例如:

1.生成壓縮文件,壓縮文件名格式:

2.壓縮文件存放在根目錄 /upload/zipfile/年月/自定義的壓縮文件名.zip

3.點擊下載壓縮包,系統開始對壓縮文件打包,打包完成后自動開始下載

4.為了防止暴露壓縮包文件路徑,需要對下載的壓縮包文件名改名

具體操作模式請見下面的代碼:

文件路徑:

壓縮包文件存放路徑:/upload/zipfile/

上傳的附件存放路徑:/upload/file/

1.基本配置文件文件 config.inc.php放在系統根目錄

 

 
  1. define('SYS_ROOT'str_replace("//"'/', dirname(__FILE__))); 
  2. define('SYS_UPLOAD', SYS_ROOT.'/upload/file'); 
  3. define('SYS_DOWNLOAD', SYS_ROOT.'/upload/zipfile'); 
  4. define('SYS_WIN'strpos(strtoupper(PHP_OS), 'WIN') !== false ? true: false); 
  5. define('SYS_CHMOD', ('0777' && !SYS_WIN) ? '0777' : 0); 

2.壓縮包程序代碼文件 getzip.php

 

 
  1. header("Content-type: text/html; charset=utf-8"); 
  2. require_once '../config.inc.php'//載入配置路徑配置文件 
  3. $arrfiles = array(SYS_UPLOAD . '/1.jpg'
  4. SYS_UPLOAD . '/x.jpg',); //這里是附件的文件數組 
  5. $orderNum = '888'//訂單號 
  6. $downFileName = 'tieniu.zip'//下載的文件名 如果為空那么就是系統自定義名稱 如果指定就顯示指定名字 
  7. $zipUrl = create_zip($arrfiles$orderNum); //生成的壓縮文件名詞 
  8. file_down($zipUrl$downFileName); //提供http下載,并可以進行重命名下載文件,建議重命名,防止路徑猜解 
  9.  
  10. /* 
  11. * 生成壓縮包文件名 
  12. * @param [String] $orderNum 訂單號 
  13. * @return [String] 返回帶有絕對路徑的訂單號的壓縮文件名 
  14. */ 
  15.  
  16. function get_zipname($orderNum) { 
  17. $zipName = SYS_DOWNLOAD . '/' . date('Ym') . '/' . $orderNum . '_' . date("Ymd_Hi") . '.zip'
  18. return $zipName
  19.  
  20. /* 
  21. * 按照特定需求打包壓縮包的目錄結構設置 
  22. */ 
  23.  
  24. function pack_object() { 
  25.  
  26.  
  27. /* 
  28. * 生成壓縮包 
  29. * @param [Array] $arrfiles 帶有絕對路徑的文件數組 
  30. * @param [String] $orderNum 訂單號 
  31. * @return [String] 返回帶有絕對路徑的訂單號的壓縮文件名 如如果失敗返回 FALSE 
  32. */ 
  33.  
  34. function create_zip($arrfiles$orderNum) { 
  35. $zipName = get_zipname($orderNum); //獲得文件名 
  36. dir_create(dirname($zipName)); //建立生成壓縮文件的目錄 
  37. $zip = new ZipArchive(); 
  38. if ($zip->open($zipName, ZIPARCHIVE::CREATE) !== TRUE) { 
  39. return FALSE; 
  40. foreach ($arrfiles as $path) { 
  41. if (is_file($path)) {//判斷文件是否存在 
  42. $zip->addFile($pathbasename($path)); //把文件加入到壓縮包中 
  43. $zip->close(); 
  44. return $zipName
  45.  
  46. /* 
  47. * 處理文件目錄 
  48. * @param [Array] $arrfiles 帶有絕對路徑的文件數組 
  49. * @param [String] $dirpath 文件路徑 
  50. * @return [String] 返回處理的文件路徑,方便生成文件目錄 
  51. */ 
  52.  
  53. function dir_path($dirpath) { 
  54. $dirpath = str_replace('//', '/', $dirpath); 
  55. if (substr($dirpath, -1) != '/'
  56. $dirpath = $dirpath . '/'
  57. return $dirpath
  58.  
  59. /* 
  60. * 生成文件目錄 
  61. * @param [String] $path 文件路徑 
  62. * @return [String] 返回生成的文件目錄結構 
  63. */ 
  64.  
  65. function dir_create($path) { 
  66. if (is_dir($path)) 
  67. return true; 
  68. $dir = str_replace(SYS_DOWNLOAD . '/'''$path); 
  69. $dir = dir_path($dir); 
  70. $temp = explode('/'$dir); 
  71. $cur_dir = SYS_DOWNLOAD . '/'
  72. $max = count($temp) - 1; 
  73. for ($i = 0; $i < $max$i++) { 
  74. $cur_dir .= $temp[$i] . '/'
  75. if (is_dir($cur_dir)) 
  76. continue
  77. @mkdir($cur_dir); 
  78. if (SYS_CHMOD) 
  79. @chmod($cur_dir, SYS_CHMOD); 
  80. if (!is_file($cur_dir . '/index.html') && !is_file($cur_dir . '/index.php')) 
  81. file_copy(SYS_ROOT . '/upload/index.html'$cur_dir . '/index.html'); 
  82.  
  83. return is_dir($path); 
  84.  
  85. /* 
  86. * 文件COPY 
  87. * @param [String] $from copy源文件 
  88. * @param [String] $to copy文件目的地 
  89. * @return [Bool] 成功 ture 失敗 false 
  90. */ 
  91.  
  92. function file_copy($from$to) { 
  93. dir_create(dirname($to)); 
  94. if (is_file($to) && SYS_CHMOD) 
  95. @chmod($to, SYS_CHMOD); 
  96. if (@copy($from$to)) { 
  97. if (SYS_CHMOD) 
  98. @chmod($to, SYS_CHMOD); 
  99. return true; 
  100. else { 
  101. return false; 
  102.  
  103. /* 
  104. * 文件下載處理函數 
  105. * @param [String] $file 文件路徑 
  106. * @param [String] $filename 下載時間重新命名的文件名 
  107. * @param [String] $data 下載文件填裝的數據內容 
  108. */ 
  109.  
  110. function file_down($file$filename = ''$data = '') { 
  111. if (!$data && !is_file($file)) 
  112. exit
  113. $filename = $filename ? $filename : basename($file); 
  114. $filetype = file_ext($filename); 
  115. $filesize = $data ? strlen($data) : filesize($file); 
  116. ob_end_clean(); 
  117. @set_time_limit(0); 
  118. if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) { 
  119. header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
  120. header('Pragma: public'); 
  121. else { 
  122. header('Pragma: no-cache'); 
  123. header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); 
  124. header('Content-Encoding: none'); 
  125. header('Content-Length: ' . $filesize); 
  126. header('Content-Disposition: attachment; filename=' . $filename); 
  127. header('Content-Type: ' . $filetype); 
  128. if ($data) { 
  129. echo $data
  130. else { 
  131. readfile($file); 
  132. exit
  133.  
  134. function file_ext($filename) { 
  135. return strtolower(trim(substr(strrchr($filename'.'), 1))); 
  136.  
  137. //此函數未用到,用來做整個目錄的打包下載 
  138. function listdir($start_dir = '.') { 
  139. $files = array(); 
  140. if (is_dir($start_dir)) { 
  141. $fh = opendir($start_dir); 
  142. while (($file = readdir($fh)) !== false) { 
  143. if (strcmp($file'.') == 0 || strcmp($file'..') == 0) 
  144. continue
  145. $filepath = $start_dir . '/' . $file
  146. if (is_dir($filepath)) 
  147. $files = array_merge($files, listdir($filepath)); 
  148. else 
  149. array_push($files$filepath); 
  150. closedir($fh); 
  151. else { 
  152. $files = false; 
  153. return $files

3.PHP程序生成壓縮文件需要用到壓縮類:ZipArchive

這個是php的擴展類,自php5.2版本以后就已經支持這個擴展,如果你在使用的時候出現錯誤,查看下php.ini里面的extension=php_zip.dll前面的分號有沒有去掉,然后再重啟Apache這樣才能使用這個類庫。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产精品一区二区三区四区| 18一19gay欧美视频网站| 久久久久国产精品www| 亚洲人成网7777777国产| 国产精品久久久久久av福利| 午夜免费日韩视频| 日本成人精品在线| 欧美黑人视频一区| 国产一区二区三区在线看| 亚洲精品国产精品自产a区红杏吧| 日本精品免费一区二区三区| 视频在线观看99| 91沈先生在线观看| 欧美一级高清免费| 日韩成人网免费视频| 欧美日韩福利在线观看| 成人欧美一区二区三区在线湿哒哒| 日韩视频―中文字幕| 日韩精品在线免费观看| 亚洲福利在线播放| 91影视免费在线观看| 国产精品女主播视频| 久久久亚洲网站| 国产91色在线|免| 国产精品黄页免费高清在线观看| 久久久久久久91| 精品国产一区二区三区久久久| 国产日韩av在线播放| 亚洲精品国产精品乱码不99按摩| 高潮白浆女日韩av免费看| 午夜精品福利在线观看| 成人黄色免费网站在线观看| 77777少妇光屁股久久一区| 国产亚洲欧美日韩精品| 国产视频久久久久久久| 欧美午夜视频在线观看| 欧美中文字幕在线播放| 日韩大片免费观看视频播放| 亚洲人成电影网站色www| 91久久国产精品91久久性色| 欧美性视频在线| 亚洲精品国精品久久99热一| 欧美色视频日本版| 一区二区三区视频在线| 亚洲美女性视频| 亚洲va欧美va国产综合久久| 精品国产乱码久久久久久天美| 色yeye香蕉凹凸一区二区av| 久久免费高清视频| 永久免费看mv网站入口亚洲| 亚洲精品电影网| 国产精品中文字幕久久久| 亚洲成**性毛茸茸| 国产精品久久久久久中文字| 国产一区二区日韩精品欧美精品| 一区二区三区国产视频| 国产情人节一区| 亚洲电影第1页| 亚洲经典中文字幕| 久久精品视频免费播放| 91丝袜美腿美女视频网站| 久久久综合免费视频| 中文字幕亚洲欧美日韩2019| 亚洲成人在线视频播放| 亚洲欧美在线第一页| 亚洲美女av黄| 亚洲精品理论电影| 久热在线中文字幕色999舞| 992tv成人免费影院| 国产精品视频最多的网站| 91精品免费久久久久久久久| 国产精品夜色7777狼人| 色伦专区97中文字幕| 亚洲成人激情小说| 国产精品露脸av在线| 亚洲精品一区二区在线| 午夜精品久久久久久久久久久久久| 国产精品欧美久久久| 久久99国产精品自在自在app| 亚洲欧洲自拍偷拍| 国产精品成人播放| 亚洲毛片在线观看| 国产精品直播网红| 欧美大片欧美激情性色a∨久久| 欧美日韩精品在线| 成人精品一区二区三区电影黑人| 亚洲人在线视频| 久久久久国产精品一区| 国产精品88a∨| 国产精品啪视频| 7777精品视频| 91精品国产自产在线| 欧美日韩不卡合集视频| 日韩免费av片在线观看| 91国内揄拍国内精品对白| 社区色欧美激情 | 久久97久久97精品免视看| 国产精品久久久久不卡| 国产一区二区在线免费| 精品国产91久久久久久| 国产xxx69麻豆国语对白| 亚洲国产小视频| 麻豆国产va免费精品高清在线| 成人黄色av播放免费| 5566日本婷婷色中文字幕97| 久久精品91久久久久久再现| 欧美成人一二三| 欧美丝袜第一区| 日韩亚洲欧美成人| 成人国产精品一区二区| 亚洲黄页视频免费观看| 成人写真福利网| 国产欧美欧洲在线观看| 91精品免费久久久久久久久| 日韩美女视频免费在线观看| 欧美成年人视频网站欧美| 亚洲精品mp4| 亚洲综合大片69999| 国模叶桐国产精品一区| 久久久国产精品亚洲一区| 91超碰中文字幕久久精品| 精品成人国产在线观看男人呻吟| 亚洲大胆人体av| 91色p视频在线| 国产区精品视频| 1769国内精品视频在线播放| 精品国产乱码久久久久久婷婷| 久热精品视频在线观看一区| 中文字幕av一区二区三区谷原希美| 久久99国产精品久久久久久久久| 久久综合国产精品台湾中文娱乐网| 国产精品久久久久久久久影视| 91老司机在线| 黑丝美女久久久| 国产99在线|中文| 欧美一区视频在线| 国产精品美乳一区二区免费| 国产精品96久久久久久又黄又硬| 久久精品视频亚洲| 国产综合在线观看视频| 午夜精品视频网站| 国产欧美日韩精品专区| 精品中文字幕久久久久久| 国产精品久久久久久婷婷天堂| 国产一区二区三区在线视频| 国产成人午夜视频网址| 亚洲天堂开心观看| 国产精品成人品| 9.1国产丝袜在线观看| 日韩欧美在线国产| 久久久久久久久久久人体| 国产日韩一区在线| 国产综合在线看| 亚洲第一页中文字幕| 精品国产区一区二区三区在线观看| 久久久久久久久久久成人| 欧美大胆a视频| 国产精品日韩欧美大师| 国产精品女人久久久久久| 5566日本婷婷色中文字幕97| 日韩精品极品在线观看播放免费视频| 欧美日韩国产一区二区| 91精品视频在线看| 成人国产在线视频|