windows环境PHP调用DotNetZipLib处理zip64文件
来源:互联网 发布:nba2k17捏脸数据中国人 编辑:程序博客网 时间:2024/06/05 23:06
项目功能:web系统为整个项目系统的软件提供自动升级功能
具体流程:用户在web系统上传更新文件,然后PHP将文件压缩为zip包,C#编写的客户端服务软件下载该zip包并解压到相应的软件目录进行软件更新
功能问题:PHP的zipArchive类只能支持常规zip文件的压缩,而C#客户端需要zip64格式的压缩文件,所以我们这里需要用PHP的COM类来加载DotNetZipLib的Ionic.Zip.ZipFile库
系统环境
系统:windows
php版本:5.3.8
说明:如果是php5.3.15之后的版本需要下载php的zip-source包将ext目录的php_com_dotnet.dll扩展加入进去
DotNetZipLib包下载:http://dotnetzip.codeplex.com/releases/view/68268
第一步 将DotNetZip注册为COM组件
用到的工具:
gacutil.exe 下载:http://pan.baidu.com/share/link?shareid=477269&uk=704879932
regasm.exe 下载:http://pan.baidu.com/share/link?shareid=477270&uk=704879932
1、将DotNetZipLib包解压之后zip-v1.9/Release目录下的Ionic.Zip.dll文件复制到C:\目录下,下载
2、开始->运行->cmd 切换到C盘 cd C:\
3、安装到GAC gacutil -i Ionic.Zip.dll
如果提示缺少MSVCR70.dll请下载http://pan.baidu.com/share/link?shareid=478218&uk=704879932 解压复制到C:\WINDOWS\SYSTEM32目录下
4、注册到COM组件服务 regasm Ionic.Zip.dll
如果下载的regasm.exe注册出错,那进入C:\WINDOWS\Microsoft.NET\Framework\v.xxx目录找到RegAsm.exe,用该程序注册COM服务
完成之后Ionic.Zip.dll就可以当做COM组件服务被PHP的COM类调用了
第二步 启用PHP的COM扩展
参考文章:http://blog.csdn.net/luochuan/article/details/8806689
第三步 编写PHP代码调用Ionic.Zip.ZipFile类生成ZIP文件
创建zip文件 zipfile.php
<?php//创建zip文件try {echo '<html>';echo ' <head>';echo ' <title>Calling .NET from PHP through COM</title>';echo ' <meta content="text/html; charset=GB2312" http-equiv="Content-Type">';echo ' </head>';echo '<body>';echo '<h2>Hello!</h2>' . "<br/>\n";echo '<h4>Trying static method</h4>' . "<br/>\n";$filename = "archive-" . date('Y-m-d_His') . ".zip";echo 'Dynamically generated archive name: ' . "\n" . '<h4>' . $filename . "</h4>\n";$zipFile = "c:/xampp/htdocs/" . $filename;//COM类加载Ionic.Zip.ZipFile动态库$zip = new COM("Ionic.Zip.ZipFile");//定义文件名$zip->name = $zipFile;//加密等级为0不加密 值为3则需要密码$zip->Encryption = 0;//密码不需要// $zip->Password = "";//用zip64方式压缩文件$zip->UseZip64WhenSaving = 2;//设置要压缩的目录$dirToZip= "c:/xampp/htdocs/work";$zip->AddDirectory($dirToZip);//执行压缩操作$zip->Save();echo '<br/>The file was saved to ' . $zip->Name . '<br/>' . "\n";$zip->Dispose();echo '</body>';echo '</html>';} catch (Exception $e) {echo 'Caught exception: ', $e->getMessage(), "\n";echo '<pre>';echo $e->getTraceAsString(), "\n";echo '</pre>';}
解压zip文件unzipfile.php
<?php//解压zip文件try {echo '<html>';echo ' <head>';echo ' <title>Calling .NET from PHP through COM</title>';echo ' <meta content="text/html; charset=GB2312" http-equiv="Content-Type">';echo ' </head>';echo '<body>';echo '<h2>Hello!</h2>' . "<br/>\n";echo '<h4>Trying static method</h4>' . "<br/>\n";$zipDir = "c:/xampp/htdocs/";$zipFile = "archive-2013-04-16.zip";//COM类加载Ionic.Zip.ZipFile动态库$zip = new COM("Ionic.Zip.ZipFile");//初始化zip文件$zip->Initialize($zipDir.$zipFile);//解压zip文件$zip->ExtractAll($zipDir);//处理过程$zip->Dispose();echo '<h2>Unzip Success!</h2>' . "<br/>\n";echo '</body>';echo '</html>';} catch (Exception $e) {echo 'Caught exception: ', $e->getMessage(), "\n";echo '<pre>';echo $e->getTraceAsString(), "\n";echo '</pre>';}
参考资料:http://dotnetzip.herobo.com/DNZHelp/Code%20Examples/COM.htm
- windows环境PHP调用DotNetZipLib处理zip64文件
- php 环境配置(windows环境)
- php 环境配置(windows环境)
- php 环境配置(windows环境)
- php 环境配置(windows环境)
- windows环境搭建PHP环境
- php 环境配置(windows环境)
- PHP Windows环境搭建
- php-windows环境搭建
- windows 搭建php环境
- PHP环境搭建-windows
- 命令调用php文件
- javascript调用php文件
- 同一个文件Linux环境下和windows环境下md5_file处理出来的结果不一致
- windows下安装配置php- java-bridge,PHP调用自己的JAVA文件
- windows环境下php和Php扩展编译,扩展dll文件编译
- IIS+php环境下:上传文件出现:windows server PHP Warning: mkdir(): Permission denied 解决办法
- [PHP]文件上传处理
- Linux0.11内核--几种地址(逻辑地址、线性地址、物理地址)的含义
- 【小蒙淘金】4.16金评-激情燃烧的岁月,你赚了吗?
- STC单片机用户应用程序区和ISP监控程序区的区别
- 我的gmail
- 录制中rampVolume参数溢出的问题
- windows环境PHP调用DotNetZipLib处理zip64文件
- 关于如何在CSDN贴代码?
- codeforces 235 C Cyclical Quest (后缀自动机 SAM)
- mysql 创建、修改、删除:表、用户、授权
- 【C++】标准C++的类型转换符
- WEB架构师成长之路之一-走正确的路
- 在WINDOWS中设置计划任务执行PHP文件
- 如何修改Windows 7 Hosts文件
- Oracle数据导入导出