2013-11-28 183 views
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文件寫入磁盤的情況下進行,這很好理解。

感謝

+0

你需要提交它像一個標題的形式。看看這裏的答案:http://stackoverflow.com/questions/3085990/post-a-file-string-using-curl-in-php –

+0

謝謝布萊恩!我不得不添加代碼:'curl_setopt($ chlead,CURLOPT_HTTPHEADER,array( 'Content-Type:text/xml', 'Content-Length:'。strlen($ output))); ' – user3044492

回答

0

檢查目標和文件的URL路徑是正確的,或者使用絕對路徑

相關問題