PHP - 发送GET请求并获取图片作为回报

时间:2012-03-16 17:46:47

标签: php javascript html css

我需要向我的页面pic.php发送一个GET请求,我希望得到一张真实的图片作为回报。

现在我实现了这个想法:

<?php
if ((isset($_GET['pic']))&&(isset($_GET['key']))){
$pic = $_GET['pic'];
$pic=stripslashes($pic);

header('Location: /content/'.$pic);

}
?>

但它并不是我想要的 - 它直接重定向到图像。我想要的是保持相同的URL,但根据提交的值获取所需的文件。 最好的方法是什么? THX。

4 个答案:

答案 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 ?>" />

基本上,您只需将图像的来源定位到您定向到图像所在的网页。