-
php在线文件与文件夹压缩实例代码
注明这款php文件压缩代码他要借助于zip.exe文件,所以我们要把zip.exe压缩文件给拿出来,实例代码如下:
- <?php
- if ( !IsSet($_GET['dirname']) )
- {
- show_input_form() ;
- }
- else
- {
- // check if empty
- if ( emptyempty($_GET['dirname']) )
- {
- hg_exit("请输入文件夹名!") ;
- }
- // check valid dirname
- if ( FALSE !== strpos($_GET['dirname'], "/") )
- {
- hg_exit(""/" 是非法的文件夹名!") ;
- }
- if ( FALSE !== strstr($_GET['dirname'], "..") )
- {
- hg_exit("".." 是非法的文件夹名!") ;
- }
- // check valid dir
- if ( !is_dir($_GET['dirname']) )
- {
- hg_exit(""{$_GET['dirname']}" 不是一个有效的文件夹!") ;
- }
- $szData = "" ;
- $szInfo = "" ;
- $file_count = @ZipDir($_GET['dirname'], &$szData, &$szInfo) ;
- $info_size_16byte = @sprintf("%016d", @strlen($szInfo)) ;
- $szData = @sprintf("%016d",$file_count) . $info_size_16byte . $szInfo . $szData ;
- $filename = $_GET['dirname'] . ".dat" ;
- if ( function_exists(gzencode) )
- {
- $szData = gzencode($szData) ;
- $filename .= ".gz" ;
- }
- Header("Content-type: application/octet-stream");
- Header("Accept-Ranges: bytes");
- Header("Accept-Length: " . strlen($szData));
- Header("Content-Disposition: attachment; filename=$filename");
- echo $szData ;
- }
- function show_input_form()
- {
- echo HtmlHead("文件打包") ;
- echo "<form name="input">n"
- . "请输入要打包的文件夹,注意,仅当前目录下的文件夹才可以下载!<p>n"
- . "<input name="dirname">n"
- . "<input type="button" value="确定" onClick="show_download_link(dirname.value);">n"
- . "</form>n" ;
- echo "<script>n"
- . "input.dirname.focus();n"
- . "function show_download_link(dir)n"
- . "{"
- . " var top = (screen.height-200)/2 ;n"
- . " var left = (screen.width-300)/2 ;n"
- . " newwin=window.open('', '', 'width=300,height=200,top=' + top + ',left=' + left + ', resizable=0,scrollbars=auto');n"
- . " url = "{$_SERVER['PHP_SELF']}" + "?dirname=" + dir ;n"
- . " newwin.document.write('<a href=' + url + '>点击此链接下载,<br>或者右键点击此处选择"另存为"</a>');n"
- . "}"
- . "</script>n" ;
- echo HtmlFoot() ;
- }
- function ZipDir($szDirName, &$szData, &$szInfo)
- {
- // write dir header
- $szInfo .= "$szDirName|[dir]n" ;
- $file_count = 0 ;
- $hDir = OpenDir($szDirName) ;
- while ( $file = ReadDir($hDir) )
- {
- if ( $file=="." || $file==".." ) continue ;
- $szCurFile = "$szDirName/$file" ;
- if ( Is_Dir($szCurFile) )
- {
- $file_count += ZipDir($szCurFile, &$szData, &$szInfo) ;
- }
- else if ( Is_File($szCurFile) )
- {
- $hCurFile = fopen($szCurFile, "rb") ;
- $size = filesize($szCurFile) ;
- $szStream = fread( $hCurFile, $size ) ;
- fclose($hCurFile) ;
- $file_count++ ;
- // write info
- $szInfo .= "$szCurFile|$sizen" ;
- // write data
- $szData .= $szStream ;
- }
- }
- // write dir footer
- $szInfo .= "$szDirName|[/dir]n" ;
- return $file_count ;
- }
- function hg_exit($str)
- {
- echo HtmlHead("Error, exit!") ;
- echo "<h5>" . $str . "</h5>" ;
- echo HtmlFoot() ;
- exit ;
- }
- function HtmlHead($title)
- {
- return "<html>nn<head>n"
- . "<meta http-equiv="Content-Type" content="text/html; charset=gb2312">n"
- . "<style type="text/css教程">n"
- . "body,input,td{font:12px verdana}n"
- . "</style>n"
- . "</head>nn<body>nn" ;
- }
- function HtmlFoot()
- {
- return Copyright() . "n</body>nn</html>" ;
- }
- function Copyright()
- {
- return "<center><font size="5" face="楷体_GB2312" color="red">使用完请立即删除本文件,以避免被其它人发现使用!</font></center>n"
- . "<br><hr color="#003388">n"
- . "<center>n"
- . "<p style="font-family:verdana; font-size:12px">Contact us: n"
- . "<a href="http://www.phpfensi.com/" target="_blank">http://www.phpfensi.com/</a></p>n"
- . "</center>n"
- . "</body>n"
- . "n"
- . "</html>" ;
- }
- ?>
出处:http://www.phpfensi.com/php/20140909/5147.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式