当前位置 博文首页 > 你是人间四月天:php图片,pdf压缩包下载
php框架使用的是Flight,主要使用到php内置的压缩类ZipArchive
<?php
/*
* 新签合同文件下载
*/
AdminManager::checkLogin();//判断是否登录
$id = isset($_REQUEST['id']) ? trim($_REQUEST['id']) : '';
$index = isset($_REQUEST['index']) ? trim($_REQUEST['index']) : '';
$table_name = isset($_REQUEST['table_name']) ? trim($_REQUEST['table_name']) : '';
$type = isset($_REQUEST['am_property_leasing_type']) ? trim($_REQUEST['am_property_leasing_type']) : 0;
if(empty($table_name)){
layuiJson('参数错误', ERR_UNNO);
}
$db = Flight::db();
$data = $db->get('table_main', '*', ['id' => $id]);
if($table_name == 'property_leasing'){
$res = $db->get($table_name, '*', ['id' => $data['table_id'], 'type' => $type]);
}else{
$res = $db->get($table_name, '*', ['id' => $data['table_id']]);
}
$down = isset($_REQUEST['down']) ? trim($_REQUEST['down']) : '';
$img_arr = !empty($res['img_files']) ? explode(',', $res['img_files']) : [];
$pdf_arr = !empty($res['pdf_files']) ? explode(',', $res['pdf_files']) : [];
$pdf_files_name_arr = !empty($res['pdf_files_name']) ? explode(',', $res['pdf_files_name']) : [];
if(empty($img_arr) && empty($pdf_arr)){
echo '没有可下载的文件';
die;
}
$is_zip = zip_download($img_arr,$pdf_arr,$down, $res, $pdf_files_name_arr);
if ($is_zip == false) {
layuiJson('无文件,无法导出', ERR_UNNO);
}else{
layuiJson('下载成功', SUCCESS);
}
function zip_download($array, $array1, $down, $res, $pdf_files_name_arr)
{
$tmpFile = tempnam(getcwd().'/tmp', ''); //临时文件
$zip = new \ZipArchive(); //php内置的压缩类
$zip->open($tmpFile, \ZipArchive::CREATE);
$is_zip = 0;
//图片
foreach ($array as $value) {
try{
$path = substr($value, 0, 2).'/'.$value;
@$fileContent = Flight::fs()->read($path);//检索图片路径的读取流
$path = time().uniqid();
@$zip->addFromString($path.'.png', $fileContent); //将文件循环压缩到压缩包
$is_zip++;
}catch(Exception $e){
continue;
}
}
//pdf
foreach ($array1 as $key => $value) {
try{
$path = substr($value, 0, 2).'/'.$value;
@$fileContent = Flight::fs()->read($path);
// $path = time().uniqid();
$path = $pdf_files_name_arr[$key];
@$zip->addFromString($path, $fileContent); //将文件循环压缩到压缩包
$is_zip++;
}catch(Exception $e){
continue;
}
}
if($is_zip <= 0){
return false;
}else{
if($down != 1){
$filename = date('YmdHis', time()) .'_'.$res['contract_name']. '.zip';
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename=' . $filename);
header('Content-Length: ' . filesize($tmpFile));
readfile($tmpFile);
unlink($tmpFile);
}else{
return true;
}
}
}