首页 > 代码库 > php批量下载文件

php批量下载文件

最近用codeigniter开发一个图片网站,发现单文件下载很容易实现,批量下载的话,不是很容易实现。

以下是参考网上的例子,编写的一个测试文件,遇到同样问题而不知道如何处理的朋友们可以参考下。

思路:

① 把要下载的图片信息组合到$imgs数组中

② 把要下载的图片打包成zip压缩包

③ 下载压缩包,删除服务器上的临时zip文件

<?php
$imgs[] = ‘http://demo.pic.com/column_f/large/IMG_Af8P_15.jpg‘;
$imgs[] = ‘http://demo.pic.com/column_f/large/IMG_l89P_08.jpg‘;

$filename = ‘tmp.zip‘;

$zip = new ZipArchive();
$zip->open($filename, ZipArchive::OVERWRITE);

foreach ($imgs as $key=>$vo) {
    $fileData = file_get_contents($vo);
    if ($fileData) {
        $zip->addFromString($key.‘.jpg‘, $fileData);
    }
}


$zip->close();

$file = fopen($filename, "r");
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: " . filesize($filename));
Header("Content-Disposition: attachment; filename=imgages.zip");
//一次只传输1024个字节的数据给客户端
$buffer = 1024; //
while (!feof($file)) {
    //将文件读入内存
    $file_data = fread($file, $buffer);
    //每次向客户端回送1024个字节的数据
    echo $file_data;
}
fclose($file);
unlink($filename); //删除文件