//Yaf框架中 public function exportPicAction(){ $idStr = addslashes($_GET['diaryid']); //获取有关联图片的贴子Id //$idStr = '2022721,2022669'; if(!$idStr){return false;} $type = addslashes($_GET['type']); $ids = explode(',', $idStr); $mysql=DB::medical();//连接数据库 medical_bbs_post_pic_rel //图片与帖子的关联表 $sql = "select pic_id,obj_id from medical_bbs_post_pic_rel where `diary_id`=:diary_id and type=0 ORDER BY pic_id DESC"; $mysql->createSql($sql, 'getpicid'); foreach ($ids as $diary_id) { $diary_id = intval($diary_id); if (!$diary_id) continue; $res = $mysql->query(array(':diary_id'=>$diary_id), 'getpicid')->fetchAll(null, 'getpicid'); if (!$res) continue; $resTmp = array(); foreach ($res as $k=>$v) { $resTmp[$v['obj_id']][] = $v; } foreach ($resTmp as $resK=>$res) { //medical_bbs_post_extend : 帖子的扩展表 surgeryafter_somedays :术后天数 $sql = "select surgeryafter_somedays,id from medical_bbs_post_extend where `id`=$resK limit 1"; $postInfo = $mysql->createSql($sql)->query()->fetch(); $days = ''; if(!isset($postInfo['surgeryafter_somedays']) || !is_numeric($postInfo['surgeryafter_somedays'])){ $postInfo['surgeryafter_somedays']=-1; } if ($postInfo['surgeryafter_somedays']>=0) { if($postInfo['surgeryafter_somedays']>0){ $days = '_术后'.$postInfo['surgeryafter_somedays'].'天'; }else{ $days = '_手术当天'; } } $picIdArr = array_map(create_function('$a', 'return $a["pic_id"];'), $res); $picIdStr = implode(',', $picIdArr); //medical_bbs_pic 图片表 //images 的路径 :upload/forum/image/20180918/180918110037_54f72a.jpg $sql = "select images from medical_bbs_pic where pic_id in ($picIdStr) and status = 1"; $pics = $mysql->createSql($sql)->query()->fetchAll(); foreach ($pics as $k => $v) { $ext=strrchr($v['images'],".");//取得图片的扩展名 /*//continue; $picPath = TUPIC.$v['images']; //图片的路径 //$picPath = 'http://tupic.yuemei.test/'.$v['images']; //$picPath = 'https://p31.yuemei.com/postimg/20170929/500_500/15066536852165.jpg'; //读取图片 //$img = @file_get_contents($picPath); //$img = helper\tool::sendCurl($picPath); $picPath = WEBUPLOAD.'/'.$v['images']; $myfile = fopen($picPath, "r"); $img = fread($myfile,filesize($picPath)); fclose($myfile);*/ $picPath = \model\QiniuClass::getPrivatUrl(str_replace('upload/', '', $v['images'])); //七牛云上获取原图 $img = helper\tool::sendCurl($picPath); //获取原图路径 if (!$img) continue; $dir = WWWROOT.'upload/exportpic/'.$diary_id.'/'; if (!file_exists($dir)){ mkdir ($dir,0777,true); //echo '创建文件夹成功'; } else { //echo '需创建的文件夹已经存在'; } //打开指定的文件 //$filename = $dir.uniqid(); $filename = $dir.$resK.$days.'_'.($k+1); $fp=@fopen($filename.$ext,"a"); //写入图片到指点的文件 fwrite($fp,$img); //关闭文件 fclose($fp); //返回图片的新文件名 //echo $filename; } } } $file_path = WWWROOT.'upload/exportpic/'; $zip=new ZipArchive(); //使用第三方 $filename = $file_path."./images.zip"; //最终生成的文件名(含路径) if($zip->open($filename, ZipArchive::CREATE)=== TRUE){ //OVERWRITE CREATE \helper\tool::addFileToZip($file_path, $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法 $zip->close(); //关闭处理的zip文件 } header("Cache-Control: public"); 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); \helper\tool::do_rmdir($file_path, false);//谨慎操作!! exit; }