Box api v2使用php

时间:2015-06-20 01:00:15

标签: php file-upload boxapiv2 php-curl

我一直在研究box api。我可以让一切工作,但文件上传。这是代码:

$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);

并将所有这些传递给post函数:

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错误,但如果我在调用post函数之前添加此行$body = http_build_query($body, '', '&');,我将收到405错误。

在这两种情况下,虽然上传无效。我确保传递文件的实际路径而不是相关路径,以防有人想知道。

我还检查了这样的解决方案:https://github.com/golchha21/BoxPHPAPI但这也没有用。

关于这个问题的任何想法以及如何解决它?

1 个答案:

答案 0 :(得分:0)

您是否尝试在Chrome插件POSTman中提出相同的请求?我不确定你的帖子功能,但这里是curl中的命令

curl https://upload.box.com/api/2.0/files/content -H“授权:Bearer ACCESS_TOKEN”-X POST -F attributes ='{“name”:“myFile.jpeg”,“parent”:{“id”:“0”}} '-F file = @ FILE_PATH