• php批量下载文件


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

      普通php下载比较简单,比如我封装的一个函数:

    function shao_download($filename = '', $file_path = '')
    {
        $fp=fopen($file_path,"r");
        $file_size=filesize($file_path);
        //下载文件需要用到的header
        Header("Content-type: application/octet-stream");
        Header("Accept-Ranges: bytes");
        Header("Accept-Length:".$file_size);
        Header("Content-Disposition: attachment; filename=".$filename);
        $buffer=1024;
        $file_count=0;
        //向浏览器返回数据
        while(!feof($fp) && $file_count<$file_size){
          $file_con=fread($fp,$buffer);
          $file_count+=$buffer;
          echo $file_con;
        }
        fclose($fp); 
    }

      

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

      思路如下:

      ① 把要下载的图片信息组合到$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); //删除文件
  • 相关阅读:
    关于java和jvm的思考
    java之try、catch、finally
    Microsoft SQLServer有四种系统数据库
    HDU 5087
    uva639 暴力、回溯
    uva127
    uva 131
    洛谷 P2580 于是他错误的点名开始了
    字典树(trie)
    HTML学习笔记
  • 原文地址:https://www.cnblogs.com/shaoyikai/p/3755079.html
Copyright © 2020-2023  润新知