1

XML ファイルを POST 経由でリモート サーバー上のフォームに送信しようとしています。その場で XML データを生成し、$XmlData という変数に文字列として格納しています。これは私の開始タグで始まる文字列です (以下の例を参照)...したがって、この文字列には「ヘッダー」はありません。XMLファイルとして一時ディレクトリのサーバーに簡単に書き込むことができます...しかし、理想的には、これをファイルであるかのように投稿したいのですが、ファイルを作成する追加の手順は必要ありません(その後、あとがきを削除)...以下は、実際に最初に作成した場合にXMLファイルをアップロードできるようにする必要があると思うコードです...

    $url  = 'http://www.mydomain.com/path/to/form/process.php';

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_VERBOSE, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)");
    curl_setopt($ch, CURLOPT_URL, _VIRUS_SCAN_URL);
    curl_setopt($ch, CURLOPT_POST, true);
    // same as <input type="file" name="xmlfileresource">
    $post = array(
        "xmlfileresource"=>"@/path/to/myfile.xml",
        "action"=>"incomingXml",
        "user"=>"JohnSmith",
    );
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
    $response = curl_exec($ch);
    curl_close($ch);

私の質問は次のとおりです: リモート サーバーが POST されている通常のファイルであると考えるように、$XmlData 文字列の内容をこの cURL 実行にストリーミング/ブロブ/何でもするにはどうすればよいですか?

実際には関係ありませんが、役立つ場合に備えて...私の $XmlData 文字列は次のようになります。

<clientversion>
    <component>
    <type>module</type>
    <name>resources</name>
    <version>2.7.3</version>
    <date>2012-09-01 02:18:33</date>
    </component>
    <component>
    <type>module</type>
    <name>staff</name>
    <version>3.1</version>
    <date>2011-04-01 07:12:48</date>
    </component>
</clientversion>
4

1 に答える 1

0

一時ファイルを書き込んで投稿し、一時ファイルを削除する必要がありました。思ったほどエレガントではありませんが、問題なく動作します。リンクを提供してくれた Brenton Alker に感謝します。

于 2012-10-17T16:50:10.863 に答える