当前位置 博文首页 > 你是人间四月天:php图片,pdf压缩包下载

    你是人间四月天:php图片,pdf压缩包下载

    作者:[db:作者] 时间:2021-09-05 13:12

    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;
    		}
    	}
    }
    
    

    在这里插入图片描述
    在这里插入图片描述

    cs
    下一篇:没有了