Glass Mirror API通过PHP将附件图像保存到服务器

时间:2014-05-29 18:57:08

标签: php google-glass google-mirror-api

我正在使用PHP快速启动项目示例来显示时间轴的附件(图像):

<?php
if ($timeline_item->getAttachments() != null) {
  $attachments = $timeline_item->getAttachments();
  foreach ($attachments as $attachment) { ?>
      <img src="<?php echo $base_url .
          '/attachment-proxy.php?timeline_item_id=' .
          $timeline_item->getId() . '&attachment_id=' .
          $attachment->getId() ?>" />
  <?php
  }
}
?>

现在我需要将图像保存到服务器,以便我可以调整其大小并在其他地方使用它。 我尝试了一些file_put_contents,fopen和curl的变种,但似乎attachment-proxy.php没有以任何这些期望的格式返回图像。

如何将时间轴附件保存到我的服务器?

解决方案:根据囚犯的回应,我再看一下attachment-proxy.php文件。它将图像作为字符串返回。我没有成功尝试过file_put_contents($ img,file_get_contents(“attachment-proxy.php ....”));之前。 结果我不需要file_get_contents()部分。 我将attachment-proxy.php的最后几行改为:

$img = $_GET['timeline_item_id'].'.jpg';
$image = download_attachment($_GET['timeline_item_id'], $attachment);
file_put_contents($img, $image);

有效。它使用ID作为文件名将映像保存到我的服务器。 谢谢。

1 个答案:

答案 0 :(得分:0)

您是否检查过 返回的内容? attachment_proxy.php要求OAuth已完成,并且如果尚未完成,则会将您重定向到OAuth流程。因此,它可能正在保存OAuth登录页面的HTML或重定向页面中的信息。

但是,如果您尝试在服务器上设置调用自己服务器附件_proxy.php页面的内容,那么您就会跳过其他不必要的环节。

您可以直接查看attachment_proxy.php,看看它是如何从Google服务器获取附件数据,然后使用相同的方法获取它们并将它们存储在您的服务器上,而不仅仅是喂食它出来的img标签。查看https://github.com/googleglass/mirror-quickstart-php/blob/master/attachment-proxy.php,似乎大部分工作都是在download_attachments()的{​​{1}}调用中完成的。您应该可以从download_attachments()借用代码或直接自己调用它。