1
我需要一些幫助。使用curl post從服務器上傳文件到另一臺服務器
我有一個PHP腳本生成一個XML文件,然後我需要提交到另一臺服務器使用POST。 XML文件是好的,因爲我可以使用curl從命令行手動上傳它。
我的代碼是:
$file = 'temp.xml';
file_put_contents($file, $output);
$post = array('extra_info' => '123456','file_contents'=>'@'.$file);
$url = "<URL>";
$chlead = curl_init();
curl_setopt($chlead, CURLOPT_USERPWD, "<USER>:<PASSWORD>");
curl_setopt($chlead, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($chlead, CURLOPT_URL, $url);
curl_setopt($chlead, CURLOPT_VERBOSE, 1);
curl_setopt($chlead, CURLOPT_POST,1);
curl_setopt($chlead, CURLOPT_POSTFIELDS, $post);
curl_setopt($chlead, CURLOPT_RETURNTRANSFER, false);
$response = curl_exec($chlead);
我可以將文件手動上傳到該處理是正確的服務器:
curl -v -k -u <USER>:<PASSWORD> -X POST --upload-file temp.xml <URL>
我失去了什麼?我使用PHP 5.2.17。此外,如果有一種方法可以在不將xml文件寫入磁盤的情況下進行,這很好理解。
感謝
你需要提交它像一個標題的形式。看看這裏的答案:http://stackoverflow.com/questions/3085990/post-a-file-string-using-curl-in-php –
謝謝布萊恩!我不得不添加代碼:'curl_setopt($ chlead,CURLOPT_HTTPHEADER,array( 'Content-Type:text/xml', 'Content-Length:'。strlen($ output))); ' – user3044492