1

我正在从另一个网站上用 PHP 绘制图像,这很有效。我正在从一个正在运行的网页获取信息。但在一起它不是而且只显示图像。如果我剪切图片部分并将其放在最后,则会出现错误。(例如,如果您需要查看 JSON 页面的外观,请使用昵称 Mazey)这与组合文件获取内容和我的 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';
  }


?>
4

1 回答 1

0

您试图在同一个文件中返回两个不同的 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 响应。我做了一个快速的谷歌,但没有有用的结果。

于 2013-07-26T20:15:51.077 回答