如何从新的RETS CRMLS下载图像

时间:2014-10-31 17:57:38

标签: php rets

我正在尝试从新的RETS CRMLS

下载图片
$photos = $rets->SearchQuery("Media","Media",$lid, array('Limit' => 'none', 'Select' => "MediaOrder,MediaURL"));
foreach ($photos as $photo)
{
  if ($photo['Success'] == true)
  {
    file_put_contents("../images/{$photo['Content-ID']}-{$photo['Object-ID']}.jpg", $photo['Data']);
    $count++;
  }   
}

这不起作用

2 个答案:

答案 0 :(得分:1)

如果要从Property类下载图像,可以使用此rets函数

$rets->GetObject("Property", "Photo", $listingId, "*", 1);

这将返回与特定listingId关联的图像数组作为图像网址。

如果要以二进制图像文件的形式下载,则可以将最后一个参数用作'0',而不是'1'。 ['1'用于获取公开图片网址]

如果要从Media类下载图像,则可以使用与Media相同的功能作为类。您应首先从Property类中获取列表ID。

答案 1 :(得分:0)

您的“file_put_contents”函数似乎正在尝试解析来自GetObject查询的multipart / mime响应中的信息标头。相反,你想要直接http下载MediaUrls。我不是一个php向导,但你会做更多的事情:

 $photoUrls = $rets->SearchQuery("Media","Media",$lid, array('Limit' => 'none', 'Select' => "MediaOrder,MediaURL"));

 while ($photo = $rets->FetchRow($photoUrls)) {

    file_put_contents("../images/{$lid}-{$photo['MediaOrder']}.jpg", file_get_contents($photo['MediaURL']));

  }   

 $rets->FreeResult($photoUrls);

此外,您可能希望将搜索范围限制为“图像”的MediaTypes,这样您就不会获得其他二进制数据或文档,例如虚拟游览URL或PDF(请参阅google group for this MLS that you also posted within)。