服务器上下载图片压缩

//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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值