强制php下载zip文件

时间:2014-09-13 12:47:26

标签: php image zip download

我有一个文件image.php,可以动态查看Zip文件夹中的图像。 所以 image.php?location =。/ folder / Hi.zip& file = image.jpg查看图片。

我有另一个文件downloadfile.php,它强制下载参数中指定的文件。 downloadfile.php?location = .folder /& amp; file = image.jpg *下载图片*

我需要的是使用downloadfile.php下载动态生成的图像(通过image.php)。

downloadfile.php

<?php
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
$file=$_GET['file'];$ext=$_GET['ext'];$location=$_GET['location'];
header('Content-disposition: attachment; filename="'.$file.'"');
header('Content-type:"'.$ext.'"');
readfile("$location"."$file");
?>

image.php

<?php
function showimage($zip_file,$file_name)
{
    $z=new ZipArchive();
    if($z->open($zip_file)!=true){
        echo "File not found";
        return false;
    }
    $stat=$z->statName($file_name);

    $fp=$z->getStream($file_name);
    if(!$fp){
        echo "Could not load image";
        return false;
    }
    header('Content-Type:image/'.$_GET['type']);
    header('Content-Length:'. $stat['size']);
    fpassthru($fp);
    return true;
}
showimage($_GET['zip'],$_GET['file']);
?>

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

为了强制浏览器下载图像文件,您可以使用image.php中的代码 然后只需更改标题 从

header('Content-Type:image/'.$_GET['type']);
header('Content-Length:'. $stat['size']); 

header("Content-Transfer-Encoding: binary");
header('Content-Description: File Transfer');
header('Content-Type:image/'.$_GET['type']);
header('Content-Length: ' . $stat['size']);
header('Content-Disposition: attachment; filename=' . $file_name);

这将强制用户下载而不是显示图像。