代码快实现逻辑
简单实现多张图片下载功能
- ZipArchive 是php自带的类库可以使用这个自带的类库进行zip下载的实现
- zipname /var/www/imgzip.zip 这个是定义一个目录下面那个$zip->open创建切判断是否有这个文件。是否能打开这个文件
- 分两种情况第一种是图片根代码在一个服务器则不需要再次下载图片直接可以将图片写入zip文件然后进行下载。第二种情况是图片在七牛云服务器或者在别的DNS服务上则需要利用file_get_contents抓取然后根据二进制流把图片直接写入你创建好的zip文件里面也就是$zip->addFromString进行实现的
- 然后就是下载图片 然后删除创建成功的zip包
$zip = new \ZipArchive ();
$zipname = "/var/www/imgzip.zip";
if ($zip->open($zipname, \ZIPARCHIVE::CREATE)!==TRUE) {
echo '无法打开文件,或者文件创建失败';die;
}
$fileArr = explode(',',$data['record_con']);//多张图片的地址
foreach ( $fileArr as $file ) {
$url = $this->qnDownload($file);
//这里将服务器上的文件添加到下载内容中,并重新赋值下载zip文件内该文件的路径
$fileContent = file_get_contents($url);
//添加图片。参数1 文件名字 参数二 二进制流
$zip->addFromString(basename($file), $fileContent);
// $zip->addFile ( $url,basename($url));
}
$zip->close ();
header ( "Content-Type: application/zip" );
header ( "Content-Transfer-Encoding: Binary" );
header ( "Content-Length: " . filesize ( $zipname ) );
header ( "Content-Disposition: attachment; filename=\"" . basename ( $zipname ) . "\"" );
readfile ( $zipname );
@unlink ( $zipname );