我有一个文件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']);
?>
有什么建议吗?
答案 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);
这将强制用户下载而不是显示图像。