Я пытаюсь загрузить изображения из нового 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++;
}
}
Это не работает
Если вы хотите загрузить изображения из класса Property, вы можете использовать эту функцию rets
$rets->GetObject("Property", "Photo", $listingId, "*", 1);
Это вернет массив изображений, связанных с конкретным listingId
как URL изображения.
Если вы хотите скачать в виде двоичных файлов изображений, вы можете использовать последний параметр как '0'
, вместо '1'
, [‘1’ для получения общедоступных изображений URL-адресов]
Если изображение должно быть загружено из класса Media, вы можете использовать ту же функцию с Media
как класс. И сначала вы должны получить идентификатор листинга из класса Property.
Кажется, ваша функция file_put_contents пытается проанализировать информационные заголовки в ответе multipart / mime из запроса GetObject. Скорее, вы захотите сделать прямую 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);
Кроме того, вы, возможно, захотите ограничить свой поиск типами MediaType «Image», чтобы не получать другие двоичные данные или документы, например URL-адреса виртуальных туров или PDF-файлы (см. группа Google для этого MLS, который вы также опубликовали в).