Box-api V2上传文件curl php返回false

时间:2013-02-22 13:56:47

标签: php curl box-api

我试图通过Box-API v2从PHP上传文件,我只得到布尔值错误响应。 我认为这是由CURL引起的,而不是Box-API,但我在过去的五个小时里一直在战斗,我找不到解决方案。任何的想法?? 牵连的代码是: 注意:该文件存在且可从代码访问,令牌正常(其他API调用工作正常)

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 个答案:

答案 0 :(得分:1)

最后我找到了解决方案。

问题是文件的相对路径,文件存在且可以从代码中访问,但CURL似乎需要文件的整个路径。

非常有用的功能curl_errno($ handle)

  

if(curl_errno($ handle)){

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

}