当用户单击指向由 Amazon AWS 提供的图像的链接时,我试图强制浏览器显示下载对话框。我有以下 PHP 脚本来执行此操作,这主要是有效的。但是,它在生成乱码网页的 iPad 上却失败了。尽管将标头中的 Content-Type 设置为“image/jpeg”,但生成的文件显示为 CSV,这可能是导致 iPad 上出现问题的原因(而桌面浏览器正在更正正确的类型)。
如果我在 Content-Type 显示为 JPEGdie()
之前放置了一个。fpassthru($fp)
如何确保我的 Content-Type 正确设置并以 JPEG 格式交付?
$urlComponents = parse_url($url); // where URL is the URL to the image on AWS
if (!isset($urlComponents['path'])) {
die();
}
$pathParts = pathinfo($urlComponents['path']);
if (!isset($pathParts['basename'])) {
die();
} else {
$image = $pathParts['basename'];
}
$fp = fopen($url, 'rb');
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$image");
header("Content-Type: image/jpeg");
header("Content-Transfer-Encoding: binary");
fpassthru($fp);
fclose($fp);
该代码基于 PHP.net 网站http://php.net/manual/en/function.fpassthru.php上给出的示例。