2014-01-20 3 views
0

Я пытаюсь загрузить файл в BOX_API с фреймами и фреймами Zend. Но я пропускаю что-то. Это первый раз, когда я использую такой интерфейс. Я читал manual. Но это пугает меня. Мой вопрос два:BOX-API Загрузить файл формы

-Первый, почему вам нужно перейти к сообщению, чтобы вызвать только имя файла, а не весь файл с правом заголовком для загрузки файла? Загрузка файла в форме не похожа на передачу имени файла через пост-вызов;

-второй и, следовательно, мне нужно сделать форму для загрузки файла или просто текстовое поле, где можно записать имя файла, который будет передан BOX-API?

UPDATE: Это код моей формы загрузки:

$form = new Zend_Form; 
    $form->setAction('/imball-reagens/public/upload') 
    ->setMethod('post'); 
    $file = new Zend_Form_Element_File('file'); 
    $file->setLabel('Choose a file to upload:'); 
    $file->addValidator('alnum'); 
    $file->setRequired(true); 
    $form->addElement($file); 
    $access_token = new Zend_Form_Element_Hidden(array('name' => 'access_token', 'value' => $result->access_token)); 
    $form->addElement($access_token); 
    $refresh_token = new Zend_Form_Element_Hidden(array('name' => 'refresh_token', 'value' => $result->refresh_token)); 
    $form->addElement($refresh_token); 
    $form->addElement('submit', 'upload', array('label' => 'Upload File')); 
    echo $form; 

И это S СТОЛБ кал в коробке API, который приходит после того, как формы:

$access_token= $this->getRequest()->getParam('access_token'); 
    $client = new Zend_Http_Client('https://upload.box.com/api/2.0/files/content'); 
    $client->setMethod(Zend_Http_Client::POST); 
    $client->setHeaders('Authorization: Bearer '.$access_token); 
    $data = $_FILES["file"]["name"]; 
    $client->setParameterPost(array(
      'filename' => '@'.$data, 
      'parent_id' => '0' 
    )); 
    $response = $client->request()->getBody(); 
    $this->view->response= $response; 
    $result = json_decode($response); 

Ошибка он бросает ниже:

{"type":"error","status":400,"code":"invalid_request_parameters","help_url":"http:\/\/developers.box.com\/docs\/#errors","message":"Invalid input parameters in request","request_id":"172518183652dcf2a16af73"} 

ответ

1

Трудно отлаживать, не видя всего кода, но в би вы вставляете это, похоже, что вы передаете $_FILES["file"]["name"] в API - это только содержит исходное имя файла, который был загружен пользователем - вам нужно передать местоположение в файл на сервере, который отправляет данные в поле API, чтобы он мог его захватить и отправить на сервер Box - это должно быть сохранено в $_FILES["file"]["tmp_name"].

Я рекомендовал бы изменить код, чтобы это и попробовать еще раз:

$access_token= $this->getRequest()->getParam('access_token'); 
$client = new Zend_Http_Client('https://upload.box.com/api/2.0/files/content'); 
$client->setMethod(Zend_Http_Client::POST); 
$client->setHeaders('Authorization: Bearer '.$access_token); 
$data = $_FILES["file"]["tmp_name"]; 
$client->setParameterPost(array(
    'parent_id' => '0' 
)); 
$client->setFileUpload($data, 'filename'); 
$response = $client->request()->getBody(); 
$this->view->response= $response; 
$result = json_decode($response); 
+0

Я tryied его, но ответ всегда та же ошибка. Думаю, мне придется проверить и другие параметры. благодарю вас за ваш ответ! – softwareplay

+0

Возможно ли, что ошибка находится только в строке URL? Должен ли я писать «http» или «https»? – softwareplay

+1

Странно, возможно, сначала сохраните файл с файлом 'move_uploaded_file' - http://uk1.php.net/move_uploaded_file, а затем укажите имя файла и путь к API-интерфейсу Box? Я думаю, что API-интерфейс Box требует HTTPS. Кроме того, я бы проверил, как вы получаете токен доступа, возможно, вместо этого возникает ошибка. – madebydavid

Смежные вопросы