温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用PHP怎么实现打包下载文件

发布时间:2021-04-09 17:57:35 来源:亿速云 阅读:145 作者:Leah 栏目:开发技术

本篇文章给大家分享的是有关使用PHP怎么实现打包下载文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

具体如下:

/** * 下载文件 * @param $img * @return string */ public function Download($img) {     $items = [];     $names = [];     if($img)     {       //用于前端跳转zip链接拼接       $path_redirect = '/zip/'.date('Ymd');       //临时文件存储地址       $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跳转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"); //告诉浏览器,这是二进制文件             header('Content-Length: ' . filesize($zipname)); //告诉浏览器,文件大小             @readfile($zipname);           }           //删除临时文件           @unlink($zipname);         }       }       return '';     } } /** * curl获取链接内容 * @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; } /** * 保存临时文件 * @param $url * @param $dir * @param $content * @return array */ public function SaveFile( $url ,$dir , $content) {     $fname   = basename($url); //返回路径中的文件名部分     $str_name  = pathinfo($fname); //以数组的形式返回文件路径的信息     $extname  = strtolower($str_name['extension']); //把扩展名转换成小写     $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);

以上就是使用PHP怎么实现打包下载文件,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI