使用phprets从rets feed下载图像
作者:互联网
我正在尝试使用PHPRETS下载RETS FEED数据和图像,我成功地将数据下载为CSV但是,尽管图像在图像文件夹中正确创建,但每个图像的大小为零.我附上我在这里使用的代码,请帮助我,以便我可以正确下载图像.
<?php
$rets_login_url = "http://retsgw.flexmls.com:80/rets2_0/Login";
$rets_username = "**********";
$rets_password = "**********";
// use http://retsmd.com to help determine the SystemName of the DateTime field which
// designates when a record was last modified
$rets_modtimestamp_field = "LIST_87";
// use http://retsmd.com to help determine the names of the classes you want to pull.
// these might be something like RE_1, RES, RESI, 1, etc.
$property_classes = array("B");
// DateTime which is used to determine how far back to retrieve records.
// using a really old date so we can get everything
$previous_start_time = "1980-01-01T00:00:00"; require_once("lib/phrets.php");
// start rets connection
$rets = new phRETS;
// only enable this if you know the server supports the optional RETS feature called 'Offset'
$rets->SetParam("offset_support", true);
echo "+ Connecting to {$rets_login_url} as {$rets_username}<br>\n";
$connect = $rets->Connect($rets_login_url, $rets_username, $rets_password);
if ($connect) {
echo " + Connected<br>\n";
}
else {
echo " + Not connected:<br>\n";
print_r($rets->Error());
exit;
}
foreach ($property_classes as $class) {
echo "+ Property:{$class}<br>\n";
$file_name = strtolower("property_{$class}.csv");
$fh = fopen($file_name, "w+") or die("Can't open file");
$fields_order = array();
$query = "({$rets_modtimestamp_field}={$previous_start_time}+)";
// run RETS search
echo " + Resource: Property Class: {$class} Query: {$query}<br>\n";
$search = $rets->SearchQuery("Property", $class, $query, array('Limit' => 1000));
$get_id = $_REQUEST['LIST_1'];
if ($rets->NumRows($search) > 0) {
// print filename headers as first line
$fields_order = $rets->SearchGetFields($search);
fputcsv($fh, $fields_order);
// process results
while ($record = $rets->FetchRow($search)) {
$this_record = array();
foreach ($fields_order as $fo) {
if ($fo == 'LIST_1') {
$photos = $rets->GetObject("Property", "Photo", $record[$fo], "*", 1);
foreach ($photos as $photo) {
if ($photo['Success'] == true) {
file_put_contents("photos/{$photo['Content-ID']}-{$photo['Object-ID']}.jpg", $photo['Data']);
}
}
}
$this_record[] = $record[$fo];
}
fputcsv($fh, $this_record);
}
}
echo " + Total found: {$rets->TotalRecordsFound($search)}<br>\n";
$rets->FreeResult($search);
fclose($fh);
echo " - done<br>\n";
}
echo "+ Disconnecting<br>\n";
$rets->Disconnect();
?>
解决方法:
你有这条线.它返回图像URL,而不是二进制图像数据.
$photos = $rets->GetObject("Property", "Photo", $record[$fo], "*", 1);
第五个参数应为0.
$photos = $rets->GetObject("Property", "Photo", $record[$fo], "*", 0);
根据PHRETS文档,1返回图像URL,0返回二进制图像数据.
https://github.com/troydavisson/PHRETS/wiki/GetObject
标签:php,rets 来源: https://codeday.me/bug/20190529/1177484.html