Ошибка загрузки файла на Box.com

Я пишу приложение PHP, которое должно загружать файлы PDF в мою корпоративную учетную запись Box.com.

Я получаю ошибку 400 (Недопустимые входные параметры в запросе), но я думаю, что все правильно.

function upload( $doc ) {

    if ( ! $this->access() )
        $this->getAccess();

    if ( ! is_readable($doc) )
        return false;

    $this->curl->clear();
    // $this->curl->setUpload( true );
    $this->curl->setMethod( 'POST' );
    $this->curl->setHeaders( $this->_header() );
    $this->curl->setValues( array(
        'parent_id' => 0,
        'filename'  => '@'.$doc
    ));
    $this->curl->exec( 'https://upload.box.com/api/2.0/files/content' );

    echo '<pre>'; print_r($this->curl->getHeaders()); echo '</pre>';
    echo '<pre>'; print_r($this->curl->getValues()); echo '</pre>';

    $response = $this->curl->getResult(true);

    echo "<pre>"; print_r($response); echo "</pre>"; exit;

}

Результат:

POST /api/2.0/files/content HTTP/1.1
User-Agent: User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:22.0) Gecko/20100101 Firefox/22.0
Host: upload.box.com
Accept: */*
Authorization: Bearer .....
Content-Length: 89
Content-Type: application/x-www-form-urlencoded

Array
(
    [parent_id] => 0
    [filename] => @/Applications/XAMPP/xamppfiles/htdocs/MyFile.pdf
)

stdClass Object
(
    [type] => error
    [status] => 400
    [code] => invalid_request_parameters
    [help_url] => http://developers.box.com/docs/#errors
    [message] => Invalid input parameters in request
    [request_id] => ......
)

Когда я раскомментирую строку для создания файла загрузки cURL, метод меняется с POST на PUT, а затем я получаю сообщение об ошибке 405 Method Not Allowed.

Согласно документации API здесь http://developers.box.com/docs/#files-upload-a-file Я все отправляю правильно.


person Ivan Dokov    schedule 08.08.2013    source источник
comment
Вы отправляете имя файла с косой чертой в имени, или это просто ваша локальная файловая система для поиска файла, который вы пытаетесь загрузить? Box не принимает / или \ в именах файлов.   -  person Peter    schedule 10.08.2013
comment
Путь и имя файла не содержат пробелов или недопустимых символов. Когда я запускаю команду cURL из терминала, я отлично загружаю файл.   -  person Ivan Dokov    schedule 12.08.2013


Ответы (1)


Написал PHP SDK для версии 2.

Просто включите класс API и инициируйте класс:

<?php
    include('library/BoxAPI.class.php');

    $client_id = 'CLIENT ID';
    $client_secret = 'CLIENT SECRET';
    $redirect_uri = 'REDIRECT URL';
    $box = new Box_API($client_id, $client_secret, $redirect_uri);

    if(!$box->load_token()){
        if(isset($_GET['code'])){
            $token = $box->get_token($_GET['code'], true);
            if($box->write_token($token, 'file')){
                $box->load_token();
            }
        } else {
            $box->get_code();
        }
    }
    // Upload file
    $box->put_file('RELATIVE FILE URL', '0'));
?>

Посмотрите здесь Скачать: BoxPHPAPI

person golchha21    schedule 10.09.2013