要用PHP压缩解压文件,常用的方法是调用命令行去执行解压缩操作
可以用exec()
、system()等函数调用shell命令
linux下解压缩命令是tar
[-cxtzjvfpPN]
文件与目录,tar命令可以压缩解压.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、.tar.Z、.zip这些类型的文件
Linux下默认无法使用rar格式的,要另外安装RAR
for
Linux,然后使用rar和unrar命令解压缩rar格式的压缩文件
B. php 压缩文件夹
php将文件夹打包成zip文件,参考代码如下:
functionaddFileToZip($path,$zip){
$handler=opendir($path);//打开当前文件夹由$path指定。
while(($filename=readdir($handler))!==false){
if($filename!="."&&$filename!=".."){//文件夹文件名字为'.'和‘..’,不要对他们进行操作
if(is_dir($path."/".$filename)){//如果读取的某个对象是文件夹,则递归
addFileToZip($path."/".$filename,$zip);
}else{//将文件加入zip对象
$zip->addFile($path."/".$filename);
}
}
}
@closedir($path);
}
$zip=newZipArchive();
if($zip->open('images.zip',ZipArchive::OVERWRITE)===TRUE){
addFileToZip('images/',$zip);//调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
$zip->close();//关闭处理的zip文件
}
C. php压缩文件并返回压缩文件的名称
使用PHPexcel,你自己到网上搜这个插件吧,将需要的文件解压到Classes目录下,那么把这个目录放在框架thinkphp/extend/vendor/下面,我将自己项目中的部分代码给你看看 在ACTION中设置上传文件并获取文件: import('ORG.Net.UploadFile');
D. PHP在线解压ZIP文件
解压步骤:
第一步、把unzip.php或upzid.php(2选1即可)通过 FTP上传到压缩包所在的文件夹;
第二步、使用“域名/unzip.php或upzid.php?file=压缩文件名称”访问解压,如 www.abc.com/unzip.php?file=name.zip ;
此源码适合php环境的zip压缩包在线解压。
注意:解压完成后请务必删除站点目录下的unzip.php和upzid.php文件,以免被其他人利用!
E. PHP 实现文件压缩解压zip格式
在php中,有时我们需要使用到压缩文件操作,压缩文件可以节省磁盘空间;且压缩文件更小,便于网络传输,效率高,下面我们就来了解php的压缩解压相关操作
在PHP中有一个ZipArchive类,专门用于文件的压缩解压相关操作
在ZipArchive类中主要使用到了如下方法:
第一个参数:要打开的压缩包文件
第二个参数:
ZIPARCHIVE::OVERWRITE 总是创建一个新的文件,如果指定的zip文件存在,则会覆盖掉
ZIPARCHIVE::CREATE 如果指定的zip文件不存在,则新建一个
ZIPARCHIVE::EXCL 如果指定的zip文件存在,则会报错
ZIPARCHIVE::CHECKCONS 对指定的zip执行其他一致性测试
上面就是ZipArchive的一些常用方法,下面来一些简单示例
F. 请高手指点:PHP 如何解压缩zip格式压缩的文件或压缩文件夹内的文件到指定目录
/**
* PHP在线压缩/解压实例
*/
date_default_timezone_set('prc');
$zip = new engine_compress_decompress();
if (isset($_POST))
{
$sourcePath = ''; //默认位置
if (isset($_FILES['upfile'])) //上传文件
{
$stmp = $zip->fileUpload('upfile');
$sourcePath = $stmp['sourcefile'];
$upfileError = $stmp['error'];
}
elseif (isset($_POST['inputfile'])) //输入目录或者文件
{
$sourcePath = $_POST['inputfile'];
}
elseif (isset($_POST['decompresssourcefiles'])) //解压缩提交
{
$isDecompress = $zip->decompress($_POST['decompresssourcefiles'], $_POST['topath']);
if (!empty($isDecompress['filelist']))
{
$href = '<script type="text/javascript" language="javascript">window.location.href=\'#decompress\'</script>';
}
}
$fileList = $zip->fileArray($sourcePath); //解压缩文件列表
if (isset($_POST['compressinputfileorfolder'])) //压缩文件目录或者文件输入
{
$sourcePath = $_POST['compressinputfileorfolder'];
$href = '<script type="text/javascript" language="javascript">window.location.href=\'#compress\'</script>';
$compressFilelist = $zip->compressFileArray($sourcePath); //压缩文件列表
}
elseif ((isset($_POST['selectcompressfilelist'])) && (isset($_POST['compresssavefilename'])))
{
$compressFiles = $zip->compress($_POST['selectcompressfilelist'], $_POST['compresssavefilename']); //真实检测
$isCompress = $zip->CompileZipFile($compressFiles, $zip->savePath, 'all');
if (!empty($isCompress))
{
$href = '<script type="text/javascript" language="javascript">window.location.href=\'#compress\'</script>';
}
}
}
G. PHP网页上打包文件生成压缩文件zip,并弹出下载
既然你只是想学习如何打包.
那我重点就回答你这一块,正好我刚刚用到;
$filename="./".date('YmdH').".zip";//最终生成的文件名(含路径)
//生成文件
$zip=newZipArchive();//使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释
if($zip->open($filename,ZIPARCHIVE::CREATE)!==TRUE){
exit('无法打开文件,或者文件创建失败');
}
//$fileNameArr就是一个存储文件路径的数组比如array('/a/1.jpg,/a/2.jpg....');
foreach($fileNameArras$val){
$zip->addFile($val,basename($val));//第二个参数是放在压缩包中的文件名称,如果文件可能会有重复,就需要注意一下
}
$zip->close();//关闭
//下面是输出下载;
header("Cache-Control:max-age=0");
header("Content-Description:FileTransfer");
header('Content-disposition:attachment;filename='.basename($filename));//文件名
header("Content-Type:application/zip");//zip格式的
header("Content-Transfer-Encoding:binary");//告诉浏览器,这是二进制文件
header('Content-Length:'.filesize($filename));//告诉浏览器,文件大小
@readfile($filename);//输出文件;
H. php将pdf文件格式转换成图片,并压缩
有一份pdf文件,需要将其转换成图片, 如果图片过大,同时还需要将其压缩。
1、安装插件
因为不同版本的用法略有区别,我这里用的是2.1版, 最近文档还需要看官方文档。
2、简单使用
3、常用方法
4、其他
1、说明
2、安装
不同版本的使用略有区别,我这用的是2.5版本的
3、简单使用
其中resize,可以指定压缩的宽度和高度,如
如果是指定宽度,智适应高度就是这样
save的三个参数是,
4、更多
更多使用,看 说明文档
压缩图片的时候,报不能读取问题
这个可能是遇到最多的问题。可能原因如下:
1、文件读取权限
查看文件的权限,看是否有读取的权限(r), 没有的话直接把文件改为 777
2、插件不支持该格式文件
输入 php --ri imagick , 在支持列表看是否支持该文件的格式。没有的话,自己网络啦。
3、内存或缓存不够
进入插件的 /vendor/intervention/image/src/Intervention/Image/Imagick/Decoder.php , 在24行断点
可能会得到消息:
然后,在网络下,原来是压缩的文件过大,插件使用的缓存不够,这里直接将配置改大即可
将配置文件改成如下