2013-02-22 81 views
1

我試圖通過Box-API v2從PHP上傳文件,而我只得到一個布爾虛假響應。 我認爲這是由CURL造成的,而不是Box-API造成的,但是我在過去的五個小時內打架,我找不到解決方案。任何想法?? 牽連代碼是: 注:該文件存在,並且是從代碼中訪問和令牌是確定的(其他調用API做工精細)Box-api V2上傳文件curl php返回false

const CONTENT_ENDPOINT = 'https://api.box.com/2.0/'; 
$file = "unexeceles.xlsx"; 

private $defaultOptions = array(
     CURLOPT_SSL_VERIFYPEER => false, 
     CURLOPT_VERBOSE  => true, 
     CURLOPT_HEADER   => true, 
     CURLINFO_HEADER_OUT => false, 
     CURLOPT_RETURNTRANSFER => true, 
     CURLOPT_FOLLOWLOCATION => false, 
    );  

public function putFile($file) { 

     $options = $this->defaultOptions; 
     $options[CURLOPT_HTTPHEADER] = array ("Authorization: Bearer ".$this->token); 
     $options[CURLOPT_POST] = true; 
     $postfields = array(); 
     $postfields["filename"] = '@'.$file; 
     $postfields["parent_id"] = 0; 

     $options[CURLOPT_POSTFIELDS] = $postfields; 
     $handle = curl_init(BoxConfig::CONTENT_ENDPOINT."files/content"); 

     curl_setopt_array($handle, $options); 

     $response = curl_exec($handle); 

     curl_close($handle); 
     if (is_string($response)) { 
      $response = $this->parse($response); 
     } 

     return $response; 
    } 

回答

1

最後,我已經找到了解決方案。

問題是文件的相對路徑,文件存在並且它是可訪問的表單代碼,但CURL似乎需要整個文件路徑。

非常有用的功能curl_errno($處理)

如果(curl_errno($處理)){

echo 'Curl error: ' . curl_error($handle); 

}