由于echo´;而忽略文本;ing图像


ignore text because of echo´ing image?

我正在用PHP从另一个网站绘制一个图像,它可以工作。我正在从一个正在工作的网页上获取信息。但这并不是,也只是显示了图像。如果我把图片的部分剪下来放在最后,就会出现错误。(例如,如果您需要查看JSON页面的外观,请使用昵称Mazey)它与组合文件get内容和我的curl函数有关吗?

<?php
$profPic  = json_decode( file_get_contents( 'https://api.kag2d.com/player/'.urlencode( $_GET['nickname'] ).'/avatar/s' ) );
if ( $profPic ) {
  if ( isset( $profPic->small ) ) {
      $profPic  = $profPic->small;
      $extension  = strtolower( pathinfo( $profPic, PATHINFO_EXTENSION ) );
      $content  = file_get_contents( $profPic );
  if ( $content ) {
    header( "Content-type: image/".$extension );
    echo $content;
    exit();
  }
}
  } else {
    echo "error";
    }
  $stats = json_decode(file_get_contents('https://api.kag2d.com/player/'.urlencode(    $_GET['nickname'] ).'/status' ));
  if ( $stats ) {
    if ( isset ( $stats->playerInfo ) ) {
      echo $stats->playerInfo->username;
  } else {
    echo 'Error';
    }
  } else {
    echo 'Error';
  }

?>

您正试图在同一文件中返回两个不同的HTTP响应。如果您阅读图像部分,它会在打印图像数据后执行exit()操作。这就是它停止处理的原因。

当我运行源中包含的URL时,返回的用户名与$_GET['nickname']中的值相同。你真的需要查找这个值吗?如果您只是返回图像,它会起作用。

解决方案是像第三方服务器一样返回JSON文档,并将所有信息嵌入其中。将图像数据作为URL是合法的HTML,因此整个内容可以作为单个JSON文档返回。RFC2397 中基于HTML的示例

<IMG SRC="data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAA
AMAAwAAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZt
fzgFzByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbt
LiOSpa/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYG
ejmJlZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3i
q9uisF81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXy
ym7PHhhx4dbgYKAAA7" ALT="Larry">

与电子邮件不同,似乎没有人在HTTP中开发多部分mime响应。我快速搜索了一下,但没有任何有用的结果。