3

我正在尝试将通用网站和 URL 显示为我自己网站的一部分。这是我正在使用的相对简单的代码的一部分:

浏览.php

<?   
$enteredurl = $_GET["url"];
$page = file_get_contents($enteredurl);
echo $page;
?>

如果 URls 是相对的而不是绝对的,则忽略某些链接/图像将不起作用的事实,这很好。使用 $_GET 访问页面,例如

browse.php?url= http://itracki.com

该网页将按预期显示。但是,当我尝试获取其他内容(例如图像)时,我会得到类似的内容,我认为这是二进制的还是什么?

browse.php?url= http://images.itracki.com/2011/06/favicon.png

‰PNG  IHDRóÿa%IDAT8Ëc8sæÌJ0M ```ã3`xaÔ€aa]r#f.–ÄíNIEND®B`‚

我一直在网上寻找并尝试修改页眉,例如

<? header('Content-type: image/png;'); ?>

但我仍然得到同样混乱的结果。如果我只是通过在地址栏中键入“ http://images.itracki.com/2011/06/favicon.png ”来访问它,有谁知道我如何才能真正看到图像?

谢谢!

4

3 回答 3

9

试试这个:

<?php
  $img = 'http://images.itracki.com/2011/06/favicon.png';
  $info = getimagesize($img);
  header('Content-type: ' . $info['mime']);
  readfile($img);
?>

您应该在这种情况下使用readfile()而不是,file_get_contents()因为readfile()会将文件内容直接发送到浏览器,而不是将其存储在内存中以供以后检索,这就是这样file_get_contents()做的。

另请注意,它content-type是动态检索的,因此您不必担心在标题中错误地指定它。

content-type某些图像的扩展名可能与其or不匹配mime-type,因此可以纠正这些类型的问题。

于 2013-01-10T05:50:19.103 回答
5

试试这个

$image = 'http://images.itracki.com/2011/06/favicon.png';
// Read image path, convert to base64 encoding
$imageData = base64_encode(file_get_contents($image));

// Format the image SRC:  data:{mime};base64,{data};
$src = 'data: '.mime_content_type($image).';base64,'.$imageData;

// Echo out a sample image
echo '<img src="',$src,'">';
于 2014-02-06T10:45:41.777 回答
-1
echo 'data:;base64,'.base64_encode(file_get_contents('http://images.itracki.com/2011/06/favicon.png'));
于 2014-09-07T01:55:37.357 回答