使用PHP通过cURL发布XML而无需先生成XML文件

时间:2012-10-09 03:58:27

标签: php file-upload curl

我正在尝试通过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执行中,以便远程服务器认为它只是一个正常的POST文件?

不太相关,但如果它有帮助......我的$ 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>

1 个答案:

答案 0 :(得分:0)

结束必须写入临时文件,发布该文件,然后删除临时文件。不像我希望的那样优雅,但它运作良好。感谢布伦顿·艾尔克(Brenton Alker)提供的链接......但是如其他帖子所述,这样做似乎不切实际。