2011-10-04 65 views
0

我在使用CURL和PHP上傳文件時遇到問題(在Windows上 - 如果它很重要)。在Windows上使用CURL,PHP和Apache上傳文件

基本上,我可以發佈到URL並顯示除文件字段外已發佈的內容。在這種情況下,我正在測試指向同一臺服務器的代碼,但是一旦我可以確認文件已上傳,我將發送到另一個域(如果它很重要)。

這裏是start.php

$curl_handle=curl_init(); 
curl_setopt($curl_handle,CURLOPT_USERPWD, "user:pass"); 
curl_setopt($curl_handle,CURLOPT_URL, "http://domain/upload.php"); 
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($curl_handle,CURLOPT_POST, 1); 
$post = array("boo"=>"yaaah", 
     "xml"=>"@e:/path/to/file/new.xml"); 
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $post); 
$buffer = curl_exec($curl_handle); 
curl_close($curl_handle); 

然後,upload.php的

print_r($_POST); 

捲曲呼叫,$緩衝器的輸出結果:

array(1) { ["boo"]=> string(5) "yaaah" } 

編輯#1

相反,我做了一個的print_r($ _ FILES),並得到這個:

array(1) { ["xml"]=> array(5) { ["name"]=> string(7) "new.xml" ["type"]=> string(24) "application/octet-stream" ["tmp_name"]=> string(26) "C:\WINDOWS\TEMP\php892.tmp" ["error"]=> int(0) ["size"]=> int(3733) } } 

這證明了我的文件被上傳。爲什麼它沒有被拾起我嘗試訪問的API是他們回答:)

+1

發生了什麼或沒有發生什麼?什麼是'curl_error()'說的? –

+0

@Pekka沒有錯誤。獲取HTTP代碼202.在查找我的文件時,我沒有使用適當的範圍。事情現在很好:) – TekiusFanatikus

回答

1

如果你想獲得上傳文件信息的問題,

print_r($_POST); 

是無益。您可能還想查看$_FILES以及:

print_r($_FILES); 

這是包含有關文件上載信息的變量。請read the manual about uploading files

+0

感謝您指出了這一點。它向我提供了確認文件確實正在經歷的確認。 – TekiusFanatikus