您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP生成压缩文件实例

2024/5/5 21:54:35发布41次查看
这篇文章主要介绍了php生成压缩文件实例,本文直接给出实现代码,需要的朋友可以参考下
大概需求:
每一个订单都有多个文件附件,在下载的时候希望对当前订单的文件自动打包成一个压缩包下载
细节需求:当前订单号_年月日+时间.zip  例如:
1.生成压缩文件,,压缩文件名格式:
2.压缩文件存放在根目录 /upload/zipfile/年月/自定义的压缩文件名.zip
3.点击下载压缩包,系统开始对压缩文件打包,打包完成后自动开始下载
4.为了防止暴露压缩包文件路径,需要对下载的压缩包文件名改名
具体操作模式请见下面的代码:
文件路径:
压缩包文件存放路径:/upload/zipfile/
上传的附件存放路径:/upload/file/
1.基本配置文件文件 config.inc.php放在系统根目录
define('sys_root', str_replace(\\, 'http://www.jb51.net/', dirname(__file__)));define('sys_upload', sys_root.'/upload/file');define('sys_download', sys_root.'/upload/zipfile');define('sys_win', strpos(strtoupper(php_os), 'win') !== false ? true: false);define('sys_chmod', ('0777' && !sys_win) ? '0777' : 0);
2.压缩包程序代码文件 getzip.php
header(content-type: text/html; charset=utf-8);require_once '../config.inc.php'; //载入配置路径配置文件$arrfiles = array(sys_upload . '/1.jpg', sys_upload . '/x.jpg',); //这里是附件的文件数组$ordernum = '888'; //订单号$downfilename = 'tieniu.zip'; //下载的文件名 如果为空那么就是系统自定义名称 如果指定就显示指定名字$zipurl = create_zip($arrfiles, $ordernum); //生成的压缩文件名词file_down($zipurl, $downfilename); //提供http下载,并可以进行重命名下载文件,建议重命名,防止路径猜解/* * 生成压缩包文件名 * @param [string] $ordernum 订单号 * @return [string] 返回带有绝对路径的订单号的压缩文件名 */function get_zipname($ordernum) { $zipname = sys_download . 'http://www.jb51.net/' . date('ym') . 'http://www.jb51.net/' . $ordernum . '_' . date(ymd_hi) . '.zip'; return $zipname;}/* * 按照特定需求打包压缩包的目录结构设置 */function pack_object() {}/* * 生成压缩包 * @param [array] $arrfiles 带有绝对路径的文件数组 * @param [string] $ordernum 订单号 * @return [string] 返回带有绝对路径的订单号的压缩文件名 如如果失败返回 false */function create_zip($arrfiles, $ordernum) { $zipname = get_zipname($ordernum); //获得文件名 dir_create(dirname($zipname)); //建立生成压缩文件的目录 $zip = new ziparchive(); if ($zip->open($zipname, ziparchive::create) !== true) {return false; } foreach ($arrfiles as $path) {if (is_file($path)) {//判断文件是否存在$zip->addfile($path, basename($path)); //把文件加入到压缩包中} } $zip->close(); return $zipname;}/* * 处理文件目录 * @param [array] $arrfiles 带有绝对路径的文件数组 * @param [string] $dirpath 文件路径 * @return [string] 返回处理的文件路径,方便生成文件目录 */function dir_path($dirpath) { $dirpath = str_replace('\\', 'http://www.jb51.net/', $dirpath); if (substr($dirpath, -1) != 'http://www.jb51.net/')$dirpath = $dirpath . 'http://www.jb51.net/'; return $dirpath;}/* * 生成文件目录 * @param [string] $path 文件路径 * @return [string] 返回生成的文件目录结构 */function dir_create($path) { if (is_dir($path))return true; $dir = str_replace(sys_download . 'http://www.jb51.net/', '', $path); $dir = dir_path($dir); $temp = explode('http://www.jb51.net/', $dir); $cur_dir = sys_download . 'http://www.jb51.net/'; $max = count($temp) - 1; for ($i = 0; $i
3.php程序生成压缩文件需要用到压缩类:ziparchive
这个是php的扩展类,自php5.2版本以后就已经支持这个扩展,如果你在使用的时候出现错误,查看下php.ini里面的extension=php_zip.dll前面的分号有没有去掉,然后再重启apache这样才能使用这个类库。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product