1
我試圖通過POST將XML文件發送到遠程服務器上的窗體。我正在生成XML數據,並將其作爲字符串存儲在名爲$ XmlData的變量中。這是一個以我的開始標記開始的字符串(請參見下面的示例)...所以在此字符串中沒有「標題」。我可以很容易地將它作爲XML文件寫入臨時目錄中的服務器......但理想情況下,我只想將它發佈爲好像它是文件,但沒有創建文件的額外步驟(然後我必須後記刪除)...以下是我認爲應該讓我上傳我的XML文件,如果我確實創造了它第一個代碼...使用PHP通過cURL發佈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);
我的問題是:如何流/ BLOB /什麼我的$ XmlData字符串的內容放入這個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>
http://stackoverflow.com/questions/3085990/post-a-file-string-using-curl-in-php是我見過的唯一解決方案。但不幸的是,我覺得將它寫入文件仍然很乾淨。 –
@Brenton Alker我同意這種方法比僅使用臨時文件更awk。太糟糕了......我真的想在記憶中做到這一切,但我找不到真正的方法來實現它。我只會將它寫入文件,發佈該文件,然後刪除該文件。謝謝。 – techtheatre