的file_get_contents错误地显示图像(file_get_contents displa

2019-08-06 06:07发布

我想,以显示通用的网站和网址为我自己的网站的一部分。 下面是我使用的代码比较简单的部分:

browse.php

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

忽略了一个事实,有些链接/图像不会,如果URL是相对的而不是绝对的工作,这工作得很好。 页面使用$ _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 ”到地址栏?

谢谢!

Answer 1:

试试这个:

<?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-typemime-type ,所以这种校正这些类型的问题。



Answer 2:

试试这个

$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,'">';


Answer 3:

echo 'data:;base64,'.base64_encode(file_get_contents('http://images.itracki.com/2011/06/favicon.png'));


文章来源: file_get_contents displaying image incorrectly