我正在从MLS RETS服务器下载属性图像。当我使用GetObject
方法下载属性图像时,有时Getobject
方法不返回成功参数,那么图像不会在本地服务器上下载。有解决方案吗?
这是我的代码:
$photos = $rets->GetObject("Property", "Photo", $idata['propertymlsid'], "*", 0);
foreach ($photos as $photo)
{
$imgval="";
$imgval="{$photo['Content-ID']}-{$photo['Object-ID']}.jpg";
if ($photo['Success'] == true)
{
@file_put_contents("photos/{$photo['Content-ID']}-{$photo['Object-ID']}.jpg", $photo['Data']);
@mysql_query("insert into tableName (pro_mlsid,photos_name,image_date)values('".$idata['propertymlsid']."','".$imgval."','".date('Y-m-d h:i:s')."')");
}else
{
// in this section i want to download image. please suggest what to do here? . i have record for this image in database for but could not download it.
}
}
请仔细阅读代码。我想在上面代码的其他部分下载图像。
答案 0 :(得分:3)
不幸的是,RETS协议不是用于处理图像的,整个过程存在很多陷阱。
当删除数据库中的项目时,RETS协议无法反映该更改。对于列表,这是一个非常罕见的事件,但不适用于图像。无论哪种方式,只有一个错误,即请求的对象尚未找到或不存在。换句话说,您必须假设该对象已被删除,您必须更新自己的记录。
代理商经常更新图片,可能已删除或更改订单。
图像下载过程是双重的。 a)您必须首先获取元数据记录,然后b)使用GetObject
获取图像本身。但是,与此同时,代理可能已删除了图像。
根据您从何处获取数据,两个事件之间可能会有很多延迟。例如,IDX通常是辅助数据库,而不是从MLS本身访问RETS提要。
所以底线你的代码可能还可以,但是因为你请求了该图像的元数据,所请求的图像实际上已被删除。
如果您的整个过程有效且缺少图像,那么它可能会很好地消失。从理论上讲,您应该运行第二个进程并尝试获取实际的元数据。如果没有返回也可以安全地假设此图像的记录消失了。
答案 1 :(得分:1)
一些房地产委员会允许代理上传损坏的照片,甚至是无效的文件(如PDF)。房地产经纪人所犯的这些错误错误地更新了RETS订阅源以指示存在有效照片,但是当您尝试下载它时,它会失败。
只需删除您的else
声明。