0

私はボックス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);

そのすべてを事後関数に渡します。

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;
}

$body = http_build_query($body, '', '&');これを使用すると 400 エラーが発生しますが、post 関数を呼び出す前にこの行を追加すると、405 エラーが発生します。

どちらの場合も、アップロードは機能していません。誰かが疑問に思っている場合に備えて、相対パスではなくファイルの実際のパスを渡すようにしました。

次のようなソリューションも確認しました: https://github.com/golchha21/BoxPHPAPIしかし、それも機能しませんでした。

問題とそれを修正する方法について何か考えはありますか?

4

1 に答える 1

0

Chrome プラグインの POSTman でこれと同じリクエストを試みましたか? ポスト関数についてはわかりませんが、curl のコマンドは次のとおりです。

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

于 2015-07-15T20:32:49.810 に答える