从数据库存储多个下载的图像 - PHP

时间:2013-04-10 16:31:56

标签: php sql file download

我在数据库中将各种图像拆分为blob文件。我编写了一个php脚本来访问这些blob文件并在本地下载。

由于有很多图像我放了一个循环,可以下载存储在数据库中的所有图像,但是当我在循环中运行脚本时,我得到一个大的下载而没有单独的图像。

我的代码如下:

$query="SELECT `id` FROM `images` LIMIT 10";
$result=mysql_query($query);
$imageid = array();

while($row = mysql_fetch_assoc($result)){
//iterate over all the fields
foreach($row as $key){ 
    $imageid[] = $key;
    }
} 

$fileName ='';

for ($i = 0; $i < count($imageid); $i++) {

    $query="SELECT `filename` FROM `images` WHERE `id`=".$imageid[$i]."";

    $result=mysql_query($query);

    while($row = mysql_fetch_assoc($result)){
        foreach($row as $key){ 
            $fileName = $key;
        }
    } 


    header("Pragma: public");
    header("Expires: 0"); // set expiration time
    header("Cache-Control: must-revalidate, post-check=0,pre-check=0");

    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");

    header("Content-Transfer-Encoding: binary");

    header('Content-type: application/octet-stream');
        header('Content-Disposition: inline; filename='.$fileName.'');

    $sql = "SELECT `data` FROM `images_data` WHERE `image_id`=".$imageid[$i]." ORDER BY id";    
        $result1=mysql_query($sql);

    while($row = mysql_fetch_array($result1)) echo $row['data'];




}//END FOR LOOP

有什么办法可以从运行脚本中下载所有图片吗? 如果我手动更改$ imageid [$ i]的参数(例如0,1,2,3等),将下载不同的图像,但它对我必须使用的图像数量无用。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您只能通过一个PHP脚本运行获得一次文件。 在你的情况下,我认为最好的方法是,将所有文件从DB存储到临时文件夹,当zip(或GZ)此文件夹时,以及在您的标题()

中使用相应的MIME类型输出此ZIP(或GZ)存档之后