1

Box-API v2 を介して PHP からファイルをアップロードしようとしていますが、ブール値の false 応答しか返されません。 これは Box-API ではなく CURL が原因だと思いますが、過去 5 時間格闘していましたが、解決策が見つかりません。何か案が??関連するコードは次のとおりです: 注: ファイルは存在し、コードからアクセス可能であり、トークンは問題ありません (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;
    }
4

1 に答える 1

1

最後に、解決策を見つけました。

問題はファイルへの相対パスでした。ファイルは存在し、アクセス可能なフォーム コードですが、CURL にはファイルへの完全なパスが必要なようです。

関数 curl_errno($handle) は非常に役立ちます

if(curl_errno($handle)) {

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

}

于 2013-02-25T11:19:53.900 に答える