0

我正在使用 PHRETS 的第 2 版,在遍历列表 ID 时,我需要下载图像。并非所有列表都有图像。在之前的版本 1 中,有一个if ($photo['Success'] == true)选项

这是我在函数中的 php 代码。我注意到 getContentType() 将显示application/xml;charset=utf-8用于没有图像的列表,而image/jpeg用于有图像的列表。另外,$photos->first()->getObjectId(); 对于没有图像的列表,将为空白。鉴于此信息,我想我可以编写一个简单的条件来检查。但我的问题是,有没有官方的方法可以做到这一点?

function downloadImages($ListingKey,$rets){
$photos = $rets->GetObject('Property','Photo',$ListingKey);

echo $photos->first()->getContentId();
echo $photos->first()->getObjectId();
echo $photos->first()->getContentType();
echo $photos->first()->getContentDescription();
echo $photos->first()->getContentSubDescription();
echo $photos->first()->getSize();
echo $photos->first()->isPreferred();
echo $photos->first()->getLocation();
}

这是我目前的条件检查

function downloadImages($listingKey,$rets){
 $photos = $rets->GetObject('Property','Photo',$listingKey);
 if($photos->first()->getContentType()=='image/jpeg'){
    mkdir('/home/server/public_html/img/'.$listingKey,0777);
    foreach ($photos as $p) {
        file_put_contents('/home/server/public_html/img/'.$listingKey.'/'.$p->getContentId().'-'.$p->getObjectId().'.jpg',$p->getContent());
    }
 } 
}
4

1 回答 1

0

看看你的服务器是否支持 getobject 的Location参数。在此处查看文档以了解如何将位置传递给 GetObject 方法:https ://github.com/troydavisson/PHRETS/wiki/GetObject 。有时您可以传入 location=1 并获取图像计数以及任何图像的 URL。此外,有时 MLS 会有一个带有列表数据的 NumberOfPhotos 字段,尽管我见过该字段不是最新的情况。最后,一些系统有一个媒体资源,您可以使用列表的 mls id 来查询列表/属性资源。不幸的是,这取决于后端 RETS 服务器提供的功能。您正在做的事情没有错,但这些其他方法可能更有效。

编辑:这是照片数量的数据字典字段:https ://ddwiki.reso.org/display/DDW17/PhotosCount+Field

于 2020-09-25T17:36:40.947 回答