2012-12-06 62 views
0

我正在爲我爲客戶端編寫的應用程序創建一個API,因爲他們既需要網站又需要移動應用程序。 API和應用程序使用Codeigniter框架以PHP編寫。在PHP中通過cURL發送多字節數據

我想通過應用程序使用輸入文件上傳文件。那麼我怎樣才能通過cURL將這個文件發送到API,以便我可以在$ _FILES變量中獲取文件?

理想情況下,我想使用POST方法,但如果需要,我也可以使用PUT或類似方法。

感謝

小號

=== UPDATE ===

我知道如何將文件從應用程序到API傳 - 我的質詢主要是更多地與如何然後在文件位於API中的情況下解析該文件。如果使用表單上傳文件,則會在$ _FILES中獲得臨時文件引用 - 這就是我想要模擬的內容。

+0

你究竟想要什麼?這是關於如何從CodeIgniter訪問輸入文件的問題嗎? – Vicary

+0

不。我試圖建立如何建立如何檢索API中的文件只是使用PHP的東西(我可以研究如何做Codeigniter之後)。如果您發佈表單,該文件將位於$ _FILES中。這在API中是不可能的,所以我該怎麼做? – RiggerTheGeek

+0

據我的理解,你的話CodeIgniter有點隱藏了超級全局$ _FILES,你無法通過你當前的API實現來訪問它。我瀏覽了一下CodeIgniter wiki,他們似乎有一個處理輸入文件的模塊/插件。那是你要的嗎? – Vicary

回答

0
<?php 
$ch = curl_init(); 
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="file_box"> 
$post = array(
    "file_box"=>"@/path/to/myfile.jpg", 
); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
$response = curl_exec($ch); 

?>

參考:: http://dtbaker.com.au/random-bits/uploading-a-file-using-curl-in-php.html

0

追加一個 '@' 的文件路徑前性格上載文件。

就你而言,請使用輸入文件中的tmp_name。

假設傳入文件通過POST發送,名稱爲'input_file'。

$curl = curl_init(/* Your URL goes here. */); 

curl_setopt_array($curl, array(
    CURLOPT_POST => true, 
    CURLOPT_POSTFIELDS => array(
     'file' => "@$_FILES[input_file][tmp_name]" 
    ) 
)); 

curl_exec($curl); 

希望有所幫助。