1

この生成された 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 を意味します。

4

0 に答える 0