我正在使用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作为文件名将映像保存到我的服务器。 谢谢。
答案 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()
借用代码或直接自己调用它。