PHP网页上打包文件生成压缩文件zip,并d出下载

PHP网页上打包文件生成压缩文件zip,并d出下载,第1张

既然你只是想学习如何打包

那我重点就回答你这一块,正好我刚刚用到;

$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 压缩文件夹等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9499590.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存