0

我正在尝试强制下载 php。从这里: http ://www.iwantanimage.com/animals/animals01.html 。单击英镑图像,下一页提供三种格式的选项。

这是我的 php 代码

<?php
header('Content-disposition: attachment; filename=sterling02md.jpg');
header('Content-type: image.jpg');
readfile('sterling02md.jpg');

header('Content-disposition: attachment; filename=sterling02lg.jpg');
header('Content-type: image.jpg');
readfile('sterling02lg.jpg');

header('Content-disposition: attachment; filename=sterling.jpg');
header('Content-type: image.jpg');
readfile('sterling02.jpg');
?> 

然而,唯一下载的图像是 sterling02md.jpg。如何修复代码以便用户可以下载选择的文件?谢谢你

4

3 回答 3

1

您的内容类型不正确。您必须提供文件的 mime 类型,即image/jpeg. 不是image.jpg

同样,您不能在单个 HTTP 请求中强制下载 3 个单独的文件。虽然某些浏览器确实支持多个文件,但您必须将每个文件封装在单独的 MIME 正文块中,而您没有这样做。

为单次下载提供这 3 个文件的 .zip 副本,或提供 3 个单独的下载链接,每个链接一个文件。

于 2012-10-13T17:10:40.120 回答
0

您可以尝试诸如链接到图像的位置downalod.php?img=sterling02

$image = isset($_GET['img']) ? $_GET['img']  : "noimage" ;
$image .= ".jpg";

header('Content-disposition: attachment; filename='.$image);
header('Content-Type: image/jpeg');
readfile($image);

但是,如果您想强制下载,请使用

header("Pragma: public");
header("Expires: 0");
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-disposition: attachment; filename='.$image);
readfile($image);
于 2012-10-13T17:11:48.807 回答
0

在查询字符串中设置选项download.php?option=1

if (!isset($_REQUEST['option']) {
   //redirect away
}
if ($_REQUEST['option'] == 1) {
   header(...)
   //sterling02md.jpg
}
于 2012-10-13T17:10:36.137 回答