2015-07-10 51 views
0

我現在掙扎了幾天。 (順便說一句,我是新來的捲曲)使用CURL和Curlfile POST多部分/表單數據所需的完整示例()

我有API的設置通過在Heroku我的移動應用程序開發人員在那裏我使用發佈表單數據如下:

public function do_add() { 

       $Name   = $this->input->post('Name'); 
       $Email   = $this->input->post('Email'); 
       $Password  = $this->input->post('Password'); 

       $txt    = "Created"; 


       $url = 'https://myfullurl.com/api/users/'; 


       $fields = array(
        'name'      => $Name, 
        'email'      => $Email, 
        'password'     => $Password, 
        'role'      => 'driver' 
       ); 

       $result = $this->scripts->api_add($url, $fields); 

         $this->session->set_userdata('Success',"Record Has Been Successfully ".$txt."..."); 
         redirect(base_url().'mmsadmin/users/view_all'); 

    } 

所以,當我張貼以上的功能數據Codeignitor收到它,並將其發佈到我的模型功能如下:

public function api_add($url, $fields){ 

$fields_string = ""; 
       //url-ify the data for the POST 
       foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } 
       rtrim($fields_string, '&'); 

       //open connection 
       $ch = curl_init(); 

       //set the url, number of POST vars, POST data 
       curl_setopt($ch, CURLOPT_URL, $url); 

       curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
       curl_setopt($ch, CURLOPT_POST, count($fields)); 
       curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string); 

       curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $this->session->userdata('Token'))); 
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

       $result = json_decode($content = curl_exec($ch)); 
       curl_close($ch); 

       return $result; 

} 

以上所有工作正常。現在我需要能夠發送一個文件。已經被谷歌搜索,發現了一些-F命令,也用它發送「@」但是當我嘗試,我的服務器時,它給我的錯誤,這種方法計提折舊,我應該使用curlfile()

燦你一個神醫了那裏改變我的功能,以顯示如何做到這一點。正如我不知所云,像現在看兩天:(

謝謝你們

您使用

回答

0

捲曲文件發送方法是從PHP5貶值,你應該使用curlfile類無頭雞到處亂跑。

// Create a cURL handle 
    $ch = curl_init('http://example.com/upload.php'); 

    // Create a CURLFile object 
    $cfile = new CURLFile('filename.fileTpye'); 

    // Assign POST data 
    curl_file_create('filename.fileTpye'); 
    // Assign POST data 
    $data =  array('test_file' =>$cfile,'name'=>'test','anotherData'=>'abc'); 
    curl_setopt($ch, CURLOPT_POST,1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 

    // Execute the handle 
    curl_exec($ch); 

以上是面向對象的風格,另一種是被下面提到程序風格:

$ch = curl_init('http://example.com/upload.php'); 

    // Create a CURLFile object 
    $cfile = curl_file_create('filename.fileTpye'); 

    // Assign POST data 
    $data = array('test_file' => $cfile); 
    curl_setopt($ch, CURLOPT_POST,1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 

    // Execute the handle 
    curl_exec($ch); 

的更多信息,請參閱PHP curlFile說明書。

+0

謝謝你,但它只是發送文件的例子。我如何發送表單數據以及文件。 我的開發者說他設置接收的方式是他獲取表單數據然後接收文件。但顯然我必須同時發送 – Zee

+0

您可以將數據附加到數據數組中,例如: '$ cfile = curl_file_create('filename.fileTpye'); //分配POST數據 $ data = array('test_file'=> $ cfile,'name'=>'test','anotherData'=>'abc'); –

相關問題