我需要向我的页面pic.php发送一个GET请求,我希望得到一张真实的图片作为回报。
现在我实现了这个想法:
<?php
if ((isset($_GET['pic']))&&(isset($_GET['key']))){
$pic = $_GET['pic'];
$pic=stripslashes($pic);
header('Location: /content/'.$pic);
}
?>
但它并不是我想要的 - 它直接重定向到图像。我想要的是保持相同的URL,但根据提交的值获取所需的文件。 最好的方法是什么? THX。
答案 0 :(得分:3)
此示例代码段应该按照您的要求执行。如果在服务器上启用了魔术引号,我还包括仅剥离斜线的代码。这将使您的代码更具可移植性,并与未来版本的PHP兼容。我还添加了getimagesize()来检测MIME类型,以便为图像输出正确的标题,而不必假设它是特定类型。
<?php
if(isset($_GET['pic']))
{
//Only strip slashes if magic quotes is enabled.
$pic = (get_magic_quotes_gpc()) ? stripslashes($_GET['pic']) : $_GET['pic'];
//Change this to the correct path for your file on the server.
$pic = '/your/path/to/real/image/location/'.$pic;
//This will get info about the image, including the mime type.
//The function is called getimagesize(), which is misleading
//because it does much more than that.
$size = getimagesize($pic);
//Now that you know the mime type, include it in the header.
header('Content-type: '.$size['mime']);
//Read the image and send it directly to the output.
readfile($pic);
}
?>
答案 1 :(得分:2)
我可以通过两种方式看到你这样做:
1)将URL返回到图像,并打印出图像标签:
print '<img src=' . $img_url . ' />';
2)或者,您可以只提取图像的数据并显示它。例如,适当地设置标题,然后只打印图像数据。
header("content-type: image/png");
print $img_data;
这假设您将图像数据存储在字符串$ img_data中。此方法还会阻止您在页面上显示其他内容。您只能显示图像。
答案 2 :(得分:0)
您可以加载图像,发送图像标题,然后显示图像:
header('Content-Type: image/jpeg');
readfile('/path/to/content/pic.jpg');
显然,标题取决于文件类型,但这很容易变得动态。
答案 3 :(得分:0)
不确定我是否理解您的目标,但猜测您是否要将图片加载到img标签中?
如果我是对的你就是这样做:
<img src=http://www.domain.com/pic.php?"<?php echo image here ?>" />
基本上,您只需将图像的来源定位到您定向到图像所在的网页。