有一堆与此标题相同的问题。例如
如何使用php输出图像?
使用 PHP 输出为图像
如何使用php输出图像并下载
答案总是一些变化
添加
header('Content-type: image/jpeg');
到您的代码中
毫无疑问,这是答案的重要部分,但遗漏了一些我真的无法解决的重要步骤。
现在,当图像位于根目录下时,使用 php 获取图像有明显的好处。
假设你有一个网页
<?php
require_once("load_a_scripts.php");
print("lots of html");
// fetch image from below root directory and output in HTML
?>
<img id="this_one" src="" height="200" width="200" />
您想输出上面的图像 this_one 吗?
PHP 可以使用 readfile() 来获取所需的文件,但这在这里并没有多大用处(最多你会得到随机的 unicode 输出,而不是这里的正确图像)。
防止乱码输出的解决方案是使用
这显然在这里似乎不合适。不仅有输出,这将使得设置标题变得不可能,而且即使这一操作过程成功,人们所能期望的最好的结果就是出现图像的下载提示。同样,这不是所需的功能。
因此,一些解决方案建议使用一些外部代码,例如“image.php”,它将拥有自己的标头并获取图像,等等。然而,这又存在一些问题。
image.php 如何知道您想要什么图像?
<?php header('Content-Type:'.$photo);
if(isset($photo)&&isset($type)){
if(strlen($photo)>15||strlen($type)>6){
die();
}
$photo = strtolower($photo);
$photo = preg_replace('/[^a-z0-9 -]+/', '', $photo);
$photo = str_replace(' ', '-', $photo);
$photo = trim($photo, '-');
$type = strtolower($type);
$type = preg_replace('/[^a-z0-9 -]+/', '', $type);
$type = str_replace(' ', '-', $type);
$type = trim($type, '-');
readfile('../img/'.$user_id.$photo);
}
假设可以使用 GET 发送与图像名称 ($photo) 和 mime ($type) 相关的参数,但同样,什么发送这些参数以及如何发送?
一些答案似乎表明您可以直接链接到外部 image.php ,就好像它是图像一样
<img src="image.php" />
但这再次提出了一个问题:image.php 如何知道 $photo 和 $type 的值。
慕娘9325324