この生成された xml の理由はわかりません。ここでは、最初の読み込みから (数秒間だけ) テキストとして表示され、その後は xml のように表示されます。問題は、cURL経由で送信したいということです。DOM で XML を生成するのに問題があると思ったので、PEAR の XML_Serializer を試してみましたが、結果は同じでした。
もう 1 つの理由は、Base64_encode(image) を生成している可能性があると考えたことですが、このファイルをブラウザーから保存し、このファイルのみをテスト モードでプッシュしようとすると、問題ないと表示されます。そして、このファイル(ブラウザで保存)をwebフォルダ(FTPでアップロード)に入れてブラウザで表示しようとすると、正常に表示されます。(開始からのコードとして 1 ~ 2 秒ではありません)。
私はこれから本当に頭が痛いです。ですから、私がしなければならないことは何でも喜んでします。返信ありがとうございます。
<?php
session_start();
ob_start();
$property_id = $_GET['u'];
function resizeImage($image,$width,$height,$scale) {
list($imagewidth, $imageheight, $imageType) = getimagesize($image);
$imageType = image_type_to_mime_type($imageType);
$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
switch($imageType) {
case "image/gif":
$source=imagecreatefromgif($image);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
$source=imagecreatefromjpeg($image);
break;
case "image/png":
case "image/x-png":
$source=imagecreatefrompng($image);
break;
}
imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);
switch($imageType) {
case "image/gif":
imagegif($newImage,$image);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
imagejpeg($newImage,$image,90);
break;
case "image/png":
case "image/x-png":
imagepng($newImage,$image);
break;
}
chmod($image, 0777);
return $image;
}
//xml reader
function xml2assoc($xml) {
$arr = array();
if (!preg_match_all('|\<\s*?(\w+).*?\>(.*)\<\/\s*\\1.*?\>|s', $xml, $m)) return $xml;
if (is_array($m[1]))
for ($i = 0;$i < sizeof($m[1]); $i++) $arr[$m[1][$i]] = xml2assoc($m[2][$i]);
else $arr[$m[1]] = xml2assoc($m[2]);
return $arr;
}
//na obrazky
function encodeme($encodeMe) {
$data = base64_encode($encodeMe);
$datalb = "";
while (strlen($data) > 64) {
$datalb .= substr($data, 0, 64) . "\n";
$data = substr($data,64);
}
$datalb .= $data;
return $datalb;
}
// cURL
function get_web_page( $url,$curl_data )
{
$options = array(
CURLOPT_BUFFERSIZE => 25000,
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_BINARYTRANSFER => true,
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => false, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => "bvsreal", // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 12000, // timeout on connect
CURLOPT_TIMEOUT => 12000, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
CURLOPT_POST => true, // i am sending post data
CURLOPT_POSTFIELDS => $curl_data, // this are my post vars
CURLOPT_SSL_VERIFYHOST => 0, // don't verify ssl
CURLOPT_SSL_VERIFYPEER => false, //
CURLOPT_VERBOSE => 1 //
);
$ch = curl_init($url);
curl_setopt_array($ch,$options);
$content = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch) ;
$header = curl_getinfo($ch);
curl_close($ch);
// $header['errno'] = $err;
// $header['errmsg'] = $errmsg;
$header['content'] = xml2assoc($content);
return $header;
}
//co bude inzerat zac (I - insert, U - update, D - delete)
$typ_operace = $_GET['typ_operace'];
if(!$typ_operace) $typ_operace = 'I'; // defaultně vkládání
//vytvoření nemovitost.xml dokumentu
$dom = new DOMDocument("1.0", "utf-8");
$dom->formatOutput = true;
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$autorizace = $dom->createElement('autorizace');
$username = $dom->createElement('username', 'xxx');
$autorizace-> appendChild($username);
$password = $dom->createElement('password', 'xxx');
$autorizace-> appendChild($password);
$software = $dom->createElement('software', 'xxx');
$autorizace-> appendChild($software);
$unikatni_id_rk = $dom->createElement('unikatni_id_rk', $property_id);
$autorizace-> appendChild($unikatni_id_rk);
$data = $dom->createElement("rows");
$sql_foto = "SELECT * FROM rl_images WHERE property_id = '$property_id' ORDER BY ord LIMIT 25";
$query_foto = mysql_query($sql_foto);
while($foto = mysql_fetch_array($query_foto)){
$row = $dom->createElement('row');
$data-> appendChild($row);
$typ_operace = $dom->createElement("typ_operace", 'I');
$row-> appendChild($typ_operace);
$foto_unikatni_id_rk = $dom->createElement('foto_unikatni_id_rk', $foto['image_id']);
$row-> appendChild($foto_unikatni_id_rk);
//zde bude foto_data v base643
$imgfile = '../rl_images/'.$foto['src'];
$img = file_get_contents($imgfile);
//$encoded = strtr(base64_encode(addslashes(gzcompress(serialize($img),9))), '+/=', '-_,');
if($img)$encoded = base64_encode($img);
$foto_data = $dom->createElement('foto_data', $encoded);
$row-> appendChild($foto_data);
// pokud je vyplněn popis, dám ho tam, pokud ne dam tam poradi
if($foto['description'])$popis = $foto['description'];
else $popis = $foto['ord'];
$foto_popis = $dom->createElement('foto_popis', $popis);
$row-> appendChild($foto_popis);
if($foto['ord']=='1')$hlavni = 1;
else $hlavni = 0;
$foto_hlavni = $dom->createElement('foto_hlavni', $hlavni);
$row-> appendChild($foto_hlavni);
$foto_poradi = $dom->createElement('foto_poradi', $foto['ord']);
$row-> appendChild($foto_poradi);
}
//$rk_id = $dom->createElement('unikatni_id_rk', $property_id);
//$data-> appendChild($rk_id);
//$clanek->setAttribute("autor", false);
//$stat = $dom->createElement('stat', '263');
//$data-> appendChild($stat);
$autorizace-> appendChild($data);
$dom-> appendChild($autorizace);
$dom-> save("foto.xml");
//vložení nemovitosti
$curl_data = array(
'data'=>'@foto.xml',
'software'=>'software'
);
$url = 'http://www.urbium.cz/import/foto.php';
//$cwd = getcwd();
$response = get_web_page($url,$curl_data);
//chdir($cwd);
print '<pre>';
print_r($response);
print '</pre>';
ob_end_flush();
?>
応答は次のとおりです。
Array
(
[url] => http://www.urbium.cz/import/foto.php
[content_type] => text/xml; charset=ISO-8859-2
[http_code] => 200
[header_size] => 420
[request_size] => 253
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.082448
[namelookup_time] => 0.001688
[connect_time] => 0.005283
[pretransfer_time] => 0.005408
[size_upload] => 428104
[size_download] => 134
[speed_download] => 1625
[speed_upload] => 5192412
[download_content_length] => 134
[upload_content_length] => 428104
[starttransfer_time] => 0.009477
[redirect_time] => 0
[content] => Array
(
[data] => Array
(
[status] => OK
[cesta] =>
[file_out_velka] =>
[sql_hf] =>
)
)
)
cesta は source を意味し、velka は big を意味します。