
既然你只是想学习如何打包
那我重点就回答你这一块,正好我刚刚用到;
$filename = "/" date ( 'YmdH' ) "zip"; // 最终生成的文件名(含路径)// 生成文件
$zip = new ZipArchive (); // 使用本类,linux需开启zlib,windows需取消php_zipdll前的注释
if ($zip->open ( $filename, ZIPARCHIVE::CREATE ) !== TRUE) {
exit ( '无法打开文件,或者文件创建失败' );
}
//$fileNameArr 就是一个存储文件路径的数组 比如 array('/a/1jpg,/a/2jpg');
foreach ( $fileNameArr as $val ) {
$zip->addFile ( $val, basename ( $val ) ); // 第二个参数是放在压缩包中的文件名称,如果文件可能会有重复,就需要注意一下
}
$zip->close (); // 关闭
//下面是输出下载;
header ( "Cache-Control: max-age=0" );
header ( "Content-Description: File Transfer" );
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 );//输出文件;
这个好像控制不了。
如果要实现这个功能,即使不需要Ajax,也需要和JS交互。但是JS好像没有读取本地文件或者目录的函数或方法。
或者,你可以写个浏览器插件,这个估计就麻烦多了。
php将文件夹打包成zip文件,参考代码如下:
function addFileToZip($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=new ZipArchive();
if($zip->open('imageszip', ZipArchive::OVERWRITE)=== TRUE){
addFileToZip('images/', $zip); //调用方法,对要打包的根目录进行 *** 作,并将ZipArchive的对象传递给方法
$zip->close(); //关闭处理的zip文件
}
以上就是关于PHP网页上打包文件生成压缩文件zip,并d出下载全部的内容,包括:PHP网页上打包文件生成压缩文件zip,并d出下载、PHP 如何实现下载zip文件、php 压缩文件夹等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)