成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導(dǎo)航首頁 ? 技術(shù)教程 ? PHP實(shí)現(xiàn)打包下載文件的方法示例
全站頭部文字 我要出現(xiàn)在這里
PHP實(shí)現(xiàn)打包下載文件的方法示例 716 2023-12-08   

本文實(shí)例講述了PHP實(shí)現(xiàn)打包下載文件的方法。分享給大家供大家參考,具體如下:

/**
* 下載文件
* @param $img
* @return string
*/
public function Download($img)
{
    $items = [];
    $names = [];
    if($img)
    {
      //用于前端跳轉(zhuǎn)zip鏈接拼接
      $path_redirect = '/zip/'.date('Ymd');
      //臨時(shí)文件存儲(chǔ)地址
      $path      = '/tmp'.$path_redirect;
      if(!is_dir($path))
      {
        mkdir($path, 0777,true);
      }
      foreach ($img as $key => $value) {
        $fileContent = '';
        $fileContent = $this->CurlDownload($value['url']);
        if( $fileContent )
        {
          $__tmp = $this->SaveFile( $value['url'] , $path , $fileContent );
          $items[] = $__tmp[0];
          $names[] = $value['name'].'_'.($key+1).'.'.$__tmp[1];
        }
      }
      if( $items )
      {
        $zip = new ZipArchive();
        $filename = time().'download.zip';
        $zipname = $path.'/'.$filename;
        if (!file_exists($zipname)) {
          $res = $zip->open($zipname, ZipArchive::CREATE | ZipArchive::OVERWRITE);
          if ($res) {
            foreach ($items as $k => $v) {
              $value = explode("/", $v);
              $end  = end($value);
              $zip->addFile($v, $end);
              $zip->renameName($end, $names[$k]);
            }
            $zip->close();
          } else {
            return '';
          }
          //通過前端js跳轉(zhuǎn)zip地址下載,讓不使用php代碼下載zip文件
          //if (file_exists($zipname)) {
            //拼接附件地址
            //$redirect = 域名.$path_redirect.'/'.$filename;
            //return $redirect;
            //header("Location:".$redirect);
          //}
          //直接寫文件的方式下載到客戶端
          if (file_exists($zipname)) {
            header("Cache-Control: public");
            header("Content-Description: File Transfer");
            header('Content-disposition: attachment; filename=附件.zip'); //文件名
            header("Content-Type: application/zip"); //zip格式的
            header("Content-Transfer-Encoding: binary"); //告訴瀏覽器,這是二進(jìn)制文件
            header('Content-Length: ' . filesize($zipname)); //告訴瀏覽器,文件大小
            @readfile($zipname);
          }
          //刪除臨時(shí)文件
          @unlink($zipname);
        }
      }
      return '';
    }
}
/**
* curl獲取鏈接內(nèi)容
* @param $url
* @return mixed|string
*/
public function CurlDownload($url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    $errno   = curl_errno($ch);
    $error   = curl_error($ch);
    $res=curl_exec($ch);
    curl_close($ch);
    if($errno>0){
      return '';
    }
    return $res;
}
/**
* 保存臨時(shí)文件
* @param $url
* @param $dir
* @param $content
* @return array
*/
public function SaveFile( $url ,$dir , $content)
{
    $fname   = basename($url); //返回路徑中的文件名部分
    $str_name  = pathinfo($fname); //以數(shù)組的形式返回文件路徑的信息
    $extname  = strtolower($str_name['extension']); //把擴(kuò)展名轉(zhuǎn)換成小寫
    $path    = $dir.'/'.md5($url).$extname;
    $fp     = fopen( $path ,'w+' );
    fwrite( $fp , $content );
    fclose($fp);
    return array( $path , $extname) ;
}

引用:

$img = [['url'=>'地址url/1.jpg','name'=>'名字']];
Download($img);

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP操作zip文件及壓縮技巧總結(jié)》、《php文件操作總結(jié)》、《php正則表達(dá)式用法總結(jié)》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《PHP基本語法入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。


主站蜘蛛池模板: 屠夫小姐在线播放| 衣女裸体男 waxing| 哈尔的移动城堡电影| 女人战争之肮脏的交易 剧情简介| 情剑山河| 家庭理论电影| 速度与激情:特别行动 电影| 胡家玮| 小牛加速器安卓版| 天地无伦| bangdream动漫| 失落之城电影| 大团圆李静张娴| 古铜| 远景山谷 (1981)| 将夜2第二季免费观看| 苏捷斯卡战役 电影| 关于雨的成语| 金福南事件始末在线观看高清影评| 美国舞男| 李洋个人资料照片| 碳水是指哪些食物| 善良的姐妹| 生物选择性必修三| 《诱惑》电影| 列维| 蜘蛛女侠| 砌体工程质量验收规范gb50203---2011 | 金枝缠梦短剧全集| 720lu在线观看| 刀客家族| 周传雄黄昏歌词| 欧美gv网站| 小绵羊男星是谁| 母亲电影韩国完整版免费观看| 绷带怪人| 永远是少年电影免费观看| 男生魔鬼训练压腿| 免费成人视屏| busty buffy| 梁祝小提琴独奏曲谱完整版 |

!!!站長長期在線接!!!

網(wǎng)站、小程序:定制開發(fā)/二次開發(fā)/仿制開發(fā)等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103