0

いくつかのxml(実際にはgoogle kmlファイル)を生成します

$kml = array('<?xml version="1.0" encoding="UTF-8"?>');
$kml[] = '<kml xmlns="http://earth.google.com/kml/2.1">';
$kml[] = ' <Document>';

私はそれの文字列を作ります

$kmlOutput = implode("\n", $kml); //Join array elements with a string

次に、配列を作成します

$data = array('code' => 'somecode', 'xml' => $kmlOutput);

次に、cURLのデータを送信します

//cURLを設定します

$ch = curl_init($URL);
curl_setopt($ch, CURLOPT_POST, true);
//curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 8);
$output = curl_exec($ch);

/**
 * Check for some errors (omitted here)
 */
curl_close($ch);

別のサーバー上のUpload.php

/* MAIN CODE*/
if ( $_SERVER['REQUEST_METHOD'] === 'POST' ){
    print "\n\n";
    echo "DEBUG: Vardump Post"; 
    var_dump($_POST);
    echo "DEBUG:";
    var_dump($_FILES);

    if ($_FILES["file"]["type"] == "text/xml"  && ($_FILES["file"]["size"] < $maxSize) ){
        if ($_FILES["file"]["error"] > 0){
            echo "Error: (Return Code: " . $_FILES["file"]["error"] . ")<br />";
        } else {
            echo "Code: ".$_POST['key']. "<br />";
            echo "Upload: " . $_FILES["file"]["name"] . "<br />";
            echo "Type: " . $_FILES["file"]["type"] . "<br />";
            echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
            echo "Temp Stored in: " . $_FILES["file"]["tmp_name"]. "<br />"; // temporary copied files disappears when the script ends


            move_uploaded_file($_FILES["file"]["tmp_name"],$dir . $_FILES["file"]["name"]);
            echo "Stored in: " . $dir . $_FILES["file"]["name"];

ただし、var_dump($ _ FILES); さらにvar_dump($ _ FILES ["code"]); 空に戻りますか?

-私はここで何かが足りないのですか?-2種類のデータを送信できますか?

4

1 に答える 1

1

$_FILESファイルをアップロードしていないため、経由して取得することはできません

@ファイルをアップロードするには、記号に続けてファイルの場所を使用する必要があります

 $data = array('code' => 'somecode', 'xml' => "@". $PATH_TO_XML_FILE);

このように直接アップロードすることもできます

curl_setopt($ch, CURLOPT_POSTFIELDS, $kmlOutput);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/xml"));

$xml =   __DIR__ ."/Pages.xml"; //full part to XML
$data = array('code' => 'somecode', 'xml' => "@$xml");
$ch = curl_init($URL);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 8);
$output = curl_exec($ch);
echo $output ;

リモートページ

    var_dump($_POST,$_FILES);
于 2012-10-08T11:43:53.127 に答える