PHP批量下载远程文件并zip压缩打包下载

PHP批量下载远程文件并zip压缩打包下载:

<?php
//示例数据
$files = array(
    'http://example.com/file1.jpg',
    'http://example.com/file2.jpg',
    'http://example.com/file3.jpg'
);
//下载压缩包的文件名
$zipFile = 'download.zip';

$zip = new ZipArchive();
if ($zip->open($zipFile, ZipArchive::CREATE) === true) {
    $multiHandle = curl_multi_init();
    $curlHandles = array();

    foreach ($files as $index => $fileUrl) {
        $curlHandles[$index] = curl_init($fileUrl);
        curl_setopt($curlHandles[$index], CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curlHandles[$index], CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($curlHandles[$index], CURLOPT_CONNECTTIMEOUT, 10);
        curl_multi_add_handle($multiHandle, $curlHandles[$index]);
    }

    $running = null;
    do {
        curl_multi_exec($multiHandle, $running);
        curl_multi_select($multiHandle);
    } while ($running > 0);

    foreach ($curlHandles as $index => $handle) {
        $content = curl_multi_getcontent($handle);
        if (!empty($content)) {
            $zip->addFromString(basename($files[$index]), $content);
        }
        curl_multi_remove_handle($multiHandle, $handle);
    }

    curl_multi_close($multiHandle);

    $zip->close();

    // 提供下载链接给用户
    header('Content-Type: application/zip');
    header('Content-Disposition: attachment; filename="' . $zipFile . '"');
    header('Content-Length: ' . filesize($zipFile));
    readfile($zipFile);

    // 删除临时文件
    unlink($zipFile);
} else {
    echo 'Failed to create zip archive.';
}
?>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值