项目要求:在服务器上,PHP程序将指定文件动态打包成压缩文件,格式是zip或者rar压缩包。
实现代码:
//download to ZIP or RAR $filename = str_replace('\\', '/', public_path()) . '/downloads_xml/' . date('YmdHis') . '.zip'; // 最终生成的文件名(含路径) // 生成文件 $zip = new ZipArchive (); // 使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释 if ($zip->open($filename, ZIPARCHIVE::CREATE) !== TRUE) { exit ('无法打开文件,或者文件创建失败'); } $list = image::where('event_id', $id)->where('user_id', Auth::user()->id)->with('author')->get(); foreach ($list as $key => $value) { $fingerprint = explode('.', $value->fingerprint)[0]; $zip->addFile(str_replace('\\', '/', public_path()) . '/downloads_xml/' . $fingerprint . '.xml', basename($fingerprint . ' --' . ($key+1) . '.xml')); // 第二个参数是放在压缩包中的文件名称,如果文件可能会有重复,就需要注意一下 } $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);//输出文件; //这虽然是在laravel下做的(记得use ZipArchive),但是步骤什么的都一样,希望对大家有所帮助。 //需要下载其他格式更改Content-Type即可。 //要想增加别的内容压缩,只需复制$zip->addFile这一行代码即可。
声明:如需转载,请注明来源于www.webym.net并保留原文链接:http://www.webym.net/jiaocheng/1003.html