1

我正在尝试通过 POST 将 XML 文件发送到远程服务器上的表单。我正在动态生成 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);

我的问题是:如何将我的 $XmlData 字符串的内容流式传输/blob/任何内容到此 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 回答