2015-06-20 102 views
0

我一直在做box api。我可以讓一切工作,但文件上傳。下面是代碼:Box api v2使用php上傳文件

$path = 'https://upload.box.com/api/2.0/files/content'; 
$method = 'POST'; 
$headers = array('Authorization Bearer ' . $accessToken); 
$attributes = array('name'=>$file_name, 'parent'=>array('id'=>0)); 
$body = array('attributes'=>json_encode($attributes), 'file'=>'@'.realpath($filepath)); 
$result = $this->post($path, $method, $body, $headers); 

和所有的傳遞到後功能:

function post($url,$method, $fields, $headers){ 
    try { 
     $ch = curl_init(); 
     curl_setopt($ch,CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
     $response = curl_exec($ch); 
     $responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

     if (false === $response) { 
      $errNo = curl_errno($ch); 
      $errStr = curl_error($ch); 
     } 
     curl_close($ch); 

    } catch (Exception $e) { 
     $response = $e->getMessage(); 
    } 

    return $responseCode; 
} 

我得到使用這個400錯誤,但如果我調用函數後前加入這一行$body = http_build_query($body, '', '&');我會得到一個405錯誤。

在這兩種情況下,雖然上傳不起作用。我一定要傳遞文件的實際路徑,而不是相對路徑,以防萬一有人想知道。

我也檢查過這樣的解決方案:https://github.com/golchha21/BoxPHPAPI但這也沒有效果。

關於這個問題的任何想法以及如何解決它?

回答

0

您是否試圖在Chrome插件POSTMAN中提出相同請求?我不確定你的發佈功能,但這裏是curl命令

curl https://upload.box.com/api/2.0/files/content -H「授權:承載ACCESS_TOKEN」-X POST -F attributes ='{「name」:「myFile.jpeg」,「parent 「:{」id「:」0「}}'-F file = @ FILE_PATH