เกิดข้อผิดพลาดในการอัปโหลดไฟล์ไปยัง 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 จาก Terminal ฉันอัพโหลดไฟล์ได้ตามปกติ   -  person Ivan Dokov    schedule 12.08.2013


คำตอบ (1)


เขียน PHP SDK สำหรับ v2

เพียงรวมคลาส 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